我在表单中有一个文本框。
[查看]
<%=html.textbox("name") %>
[控制器]
Index(string name)
{
name = "something";
return View();
}
表格提交 在这种情况下,如果不发送任何ViewData,则会保留文本框值。但是“某事”值未设置。
但是我将动作更改为 [控制器]
Index()
{
string name="something";
return view();
}
不保持该值。
真的对这个参数发生了影响。
答案 0 :(得分:0)
如果要在Controller中设置html.textbox(“name”)的数据,请使用ViewData [“name”] =“something”
答案 1 :(得分:0)
您的问题不是很清楚,您的代码示例实际上并没有向ViewData或视图模型添加任何内容 - 这里是我认为您尝试做的事情......
假设您要重新填充表单并且您的视图是强类型的,您可以执行以下操作:
public ActionResult Index(String name)
{
MyModel model = new MyModel;
model.Name = name;
ViewData.Model = model;
return View();
}
视图中具有相同名称的文本框将具有从模型
中自动填充的值<%= html.textbox("Name") %>
发布表单然后将模型对象发布到您的控制器,如下所示:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(MyModel model)
{
// do something with the model
ViewData.Model = model;
return View();
}
然后使用模型数据重新填充表单。
答案 2 :(得分:0)
控制器中的Index操作中的字符串名称映射到FormValue,如果更改它,MVC会理解它需要将FormValueCollection中的值添加到文本框中,并且您已在Index操作中更改了该值。如果你自己声明一个变量,这不起作用,因为没有绑定到formvalues。