2009-09-25 113 views
0

我在窗体中有一个文本框。mvc中的模型绑定

[查看]

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

[控制器]

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

在表单提交 在这种情况下,不发送任何ViewData的文本框的值maintained.But值 “东西” 是不是设置向上。

但是WHN i中的操作变更为 [控制器]

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

的值没有被维持。

真的wat在那个参数上发生。

+4

这段代码不会编译,对我来说也不是有意义的伪代码。如果您显示您正在使用的实际代码,这将有所帮助。 – 2009-09-25 13:48:44

回答

0

如果你想设置的控制器使用的ViewData的html.textbox数据(“名称”)[“名称”] =“东西”

0

你的问题不是很清楚,你的代码示例是不实际添加任何东西到ViewData或视图模型 - 这是我认为你想要做什么的一个镜头...

假设你想重新填充窗体并且你的View是强类型的,你可以这样做:

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

,然后重新填充模型数据的形式。

0

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

+0

但我改变了行动内的价值,我不反映在视图中。 在这种情况下 索引(字符串名称) { name =“somethng”; return view(); } 但字符串“somethng”不反映在视图中.. – Santhosh 2009-09-25 15:02:40