我有一个动作方法,如下所示:
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/
有没有办法删除actionmethod中的查询字符串?
解决方法
不,除非你使用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();
}
