我写了一个简短的程序,但我没有得到预期的结果。考虑这个视图,它只是一个带有两个文本框和一个提交按钮的表单:
@{ ViewBag.Title = "Index"; }
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
@Html.TextBox("Box1", (string)ViewBag.TextBox1)
@Html.TextBox("Box2", (string)ViewBag.TextBox2)
<input type="submit" value="Search" />
}
这是我的控制人员:
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(string Box1, string Box2)
{
ViewBag.TextBox1 = Box2;
ViewBag.TextBox2 = Box1;
return View("index",ViewBag);
}
基本上,当有人点击提交按钮时,我尝试切换textbox1和textbox2的内容。但无论我尝试什么,它都不起作用(即价值保持原样)。起初我以为??
可能与它有关,但我用??
注释了这些行,但仍然得到了相同的结果。而不仅仅是return view()
我尝试了return view("index", ViewBag)
,但这没有任何区别。谁知道我在这里做错了什么?
答案 0 :(得分:3)
只需清除您的模型状态即可。用以下代码替换您的POST方法:
[HttpPost]
public ActionResult Index(string Box1, string Box2)
{
ModelState.Clear();
ViewBag.TextBox1 = Box2;
ViewBag.TextBox2 = Box1;
return View();
}
答案 1 :(得分:-2)
这是控制器需要做的事情。谈论这么简单的任务罗嗦:
[HttpPost]
public ActionResult Index(string Box1, string Box2)
{
ModelState.SetModelValue("Box1", new ValueProviderResult(Box2, string.Empty, System.Globalization.CultureInfo.InvariantCulture));
ModelState.SetModelValue("Box2", new ValueProviderResult(Box1, string.Empty, System.Globalization.CultureInfo.InvariantCulture));
return View();
}