string Model,将值传递给控制器​​问题

时间:2013-01-23 15:20:00

标签: asp.net-mvc razor

我有一个绑定到字符串的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();
}

当我按下提交按钮时,会触发Index Post操作结果,但'string name'参数为null。 Razor是不是足够聪明,可以从视图中自动将此属性绑定到我的控制器,因为输入id与控制器上的参数名称相匹配?如果没有,我该如何绑定它?我知道带有属性的模型我可以使用Html.HiddenFor(m =&gt; m.Foo),但由于没有属性,我不知道如何正确调用此方法..我可以正确设置它调用Html。隐藏(“名称”,“foo”),但我不知道如何在这里传递值。我知道我可以使用jquery调用,例如:

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

这将字面上的jquery字符串作为值发送给控制器......我不知道此时该怎么做。谢谢!

1 个答案:

答案 0 :(得分:2)

绑定属性非常聪明,只需为输入提供一个与action参数匹配的名称:

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