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

问题描述 投票:0回答:4

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

这是我的 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”设置为默认值零。 我知道这是显而易见的,但我不明白为什么这不起作用。

html asp.net-mvc-3
4个回答
1
投票

您的 BeginForm 调用(或您的

<form>
)是否包裹文本框?

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

(这可能是错误的语法,我已经有一段时间没有使用 MVC2 了)。


0
投票

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

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

0
投票

感谢您的回复。 我发现问题是什么了。有一些 jquery 使用 maskMoney 函数将类型从十进制更改为字符串。 我的“金额”模型类型是十进制,默认值为 0。因此我将类型更改为字符串,将其传递到我的控制器并将其解析回十进制类型。


0
投票

就我而言,我有一个

@Html.HiddenFor
错误地引用了我的财产,位于顶部的某个位置。删除它允许将值回发。

© www.soinside.com 2019 - 2024. All rights reserved.