Html.TextBox不使用HttpPost向控制器提交值

时间:2015-02-10 18:11:44

标签: html asp.net-mvc-3

这是一个简单的问题,我以前做过的事情,但我不明白为什么这不起作用。

这是我的HTML助手:

<%= Html.TextBoxFor(am => Model.Amount, new { @id = "myAmount" })%>

我使用提交按钮从同一视图提交表单:

<input id="myprocess" type="submit" value="Submit" name="myprocess">

当我调试它时,它会击中我的控制器:

[HttpPost]
public ActionResult ProcessCreate(myModel m)
{..code here..}

但我的模型属性'm.Amount'设置为默认值零。我知道这很明显,但我不明白为什么这不起作用。

3 个答案:

答案 0 :(得分:0)

您的BeginForm调用(或您的<form>)是否包装文本框?

<% using (Html.BeginForm("ProcessCreate", "ControllerName", FormMethod.Post)) %>
<% { %>
    ....
    <%= Html.TextBoxFor(am => Model.Amount, new { @id = "myAmount" })%>
    ....
<% } %>

(这可能是错误的语法,我有一段时间没有在MVC2中工作过。)

答案 1 :(得分:0)

lambda表达式不正确。您需要将其更改为:

<%= Html.TextBoxFor(am => am.Amount, new { @id = "myAmount" })%>

答案 2 :(得分:0)

感谢您的回复。我发现了问题所在。有一些jquery使用了maskMoney函数,它将类型从十进制更改为字符串。我的'Amount'的模型类型是十进制,其默认值为0.所以我将类型更改为字符串,将其传递给我的控制器并将其解析为十进制类型。