2013-01-23 63 views
2

我有一个ASP.NET Razor视图绑定到字符串。它非常简单:字符串模型,传递值到控制器问题

@model string 
@{ 
    Layout = "~/Views/Shared/_Layout.cshtml"; 
} 

Hello, @Model 

@using(Html.BeginForm()) 
{ 
    <fieldset> 
     <label for="name" style="color: whitesmoke">Name:</label>  
     <input type="text" id="name"/> 
     <br/> 
     <input type="submit" value="Submit"/> 
    </fieldset> 
} 

和一个简单的控制器:

[HttpGet] 
public ActionResult Index() 
{ 
    object model = "foo"; 
    return View(model); 
} 

private string name; 
[HttpPost] 
public ActionResult Index(string name) 
{ 
    return View(); 
} 

当我按下提交按钮,该指数邮政作用的结果触发,但“字符串名称”参数为空。不是Razor智能够从视图中自动将此属性绑定到我的控制器,因为输入ID与控制器上的参数名称相匹配?如果不是,我该如何绑定这个?我知道模型的属性我可以使用Html.HiddenFor(m => m.Foo),但由于没有属性,我不知道如何正确调用此方法..我可以正确设置它调用Html.Hidden (“name”,“foo”),但我不知道如何在这里传递值。我知道我可以使用jQuery调用,如:

@Html.Hidden("name", "$('input[id=name]').val())"); 

字面上发送jQuery的字符串到控制器的价值......我不知道在这一点上做的。谢谢!

回答

2

它是足够聪明的属性绑定,只是给你的输入与操作参数相匹配的名称:

<input type="text" id="name" name="name" /> 
+0

哇...谢谢!那么使用Html.Hidden()的东西有什么意义呢?它主要用于非POD数据类型,还是有任何意义? – dferraro

+0

@dferraro,我想你的意思不仅是'Html.Hidden()',而是html helper。它们帮助您通过生成HTML并将结果作为字符串返回来创建HTML控件。如果你真的想知道html助手的所有好处,你最好问一个新的问题。 – Zabavsky

相关问题