0

我在表单中有一个文本框。

[看法]

<%=html.textbox("name") %>

[控制器]

 Index(string name)
    {
    name = "something";
    return View();
    }

On Form Submit 在这种情况下,没有发送任何 ViewData,文本框的值被保留。但是“某事”的值没有设置。

但是当我将 Action 更改为 [Controller]

Index()
{
string name="something";
return view();
}

该值未保持。

真的发生在那个参数上。

4

3 回答 3

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();
}

然后用模型数据重新填充表单。

于 2009-09-25T14:06:01.653 回答
0

控制器中 Index 操作中的字符串名称被映射到 FormValue,如果您更改它,MVC 知道它需要将 FormValueCollection 中的值添加到文本框,并且您已经在 Index 操作中更改了它。如果你自己声明一个变量,这是行不通的,因为没有绑定到表单值。

于 2009-09-25T14:07:32.887 回答
0

如果要在控制器中为 html.textbox("name") 设置数据,请使用 ViewData["name"] = "something"

于 2009-09-25T14:04:29.253 回答