【问题标题】:string Model, passing value to controller issue字符串模型,将值传递给控制器​​问题
【发布时间】:2013-01-23 15:20:00
【问题描述】:

我有一个绑定到字符串的 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 字符串作为值发送到控制器...我不确定此时该做什么。谢谢!

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:

    绑定属性很聪明,只需给你的输入一个与动作参数匹配的名称:

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

    【讨论】:

    • 哦哇...谢谢!那么使用 Html.Hidden() 的东西有什么意义呢?是主要针对非POD数据类型,还是这里有什么意义?
    • @dferraro,我猜你的意思不仅仅是Html.Hidden(),还有html助手。它们通过生成 HTML 并将结果作为字符串返回来帮助您创建 HTML 控件。如果你真的想知道 html 助手的所有好处,你最好问一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多