【问题标题】:Can't get input type="text" value in action on form submit?表单提交时无法获取输入类型 =“文本”值?
【发布时间】:2013-11-04 02:15:12
【问题描述】:

在 Razor 视图中,我有 input type="text"、一个隐藏字段和一个按钮。我可以从表单集合中访问隐藏字段,但很奇怪我无法在我的操作中访问 input type="text" 值。我不确定我的理解是否正确,但我认为表单中的所有字段都应该在操作中可用。

下面是我的代码:

   @using (Html.BeginForm())
    {
    <div style="margin-top: 40px;">
    <input id="txtDateFrom" class="span2" size="16" value="@Model.StartDate.ToString("dd/MM/yyyy") " readonly="readonly" type="text">
    @Html.Hidden("currencyCode", (object)ViewBag.currencyCode)
    </div>
    <button onclick="@Url.Action("ExchangeRateDetails", "ExchangeRate")" class="btn btn-lg     span2 ARML50px">
    }

非常感谢您的时间、指导和帮助。

【问题讨论】:

  • 投反对票?先生,请您指导一下为什么?

标签: c# asp.net-mvc-4 razor


【解决方案1】:

您的隐藏输入起作用的原因是您在 Html 帮助程序 @Html.Hidden 的帮助下呈现它。这个助手用 name 属性渲染输入字段。

您的&lt;input type="text"&gt; 缺少名称属性。所以尝试这样写:

<input id="txtDateFrom" name="txtDateFrom" class="span2" size="16" value="@Model.StartDate.ToString("dd/MM/yyyy") " readonly="readonly" type="text" />

name="txtDateFrom" 将使值出现在您的 FormCollection 中。

【讨论】:

    【解决方案2】:

    试试这个方法

    按钮不需要onclick="@Url.Action("ExchangeRateDetails", "ExchangeRate")"

    将按钮更改为以下方式

    <button type="submit" class="btn btn-lg span2 ARML50px">
    

    现在您的控制器可以获取输入文本

    [HttpPost]
    Public ActionResult ExchangeRateDetails(YourmodelClass xxx)
    {
     string dates=Model.StartDate;
    }
    

    这个网站有很多很多how to send a model values from view to controllers的答案,请参阅本页右上角的相关讨论。

    【讨论】:

    • 谢谢,这看起来是个好方法,但不幸的是它在这里不起作用。在操作中,我能够获取 viewmodel 对象,但它的 StartDate 具有值 model.StartDate = {1/1/0001 12:00:00 AM} 这是错误的。您能否进一步了解这种方法?谢谢
    猜你喜欢
    • 1970-01-01
    • 2011-06-23
    • 2011-12-17
    • 1970-01-01
    • 2017-12-18
    • 2011-08-19
    • 2013-02-24
    • 2015-03-27
    相关资源
    最近更新 更多