我有一个动作方法,如下所示:
public ActionResult Index(string message) { if (message != null) { ViewBag.Message = message; } return View(); }
发生什么事情是,对这个请求的URL将如下所示:
www.mysite.com/controller/?message=Hello%20world
但我希望它看起来只是
www.mysite.com/controller/
解决方法
不,除非你使用POST方法,否则信息必须通过某种方式.另一种可能是使用中间类.
// this would work if you went to controller/SetMessage?message=hello%20world public ActionResult SetMessage(string message) { ViewBag.Message = message ?? ""; return RedirectToAction("Index"); } public ActionResult Index() { ViewBag.Message = TempData["message"] != null ? TempData["message"] : ""; return View(); }
要么.如果你只是使用一个POST
//your view: @using(Html.BeginForm()) { @Html.TextBox("message") <input type="submit" value="submit" /> } [HttpGet] public ActionResult Index() { return View(); } [HttpPost] public ActionResult Index(FormCollection form) { ViewBag.Message = form["message"]; return View(); }