【问题标题】:Html.BeginForm is not workingHtml.BeginForm 不工作
【发布时间】:2014-02-25 08:00:16
【问题描述】:

我想获取文本框的值,我将根据该值下载一个 Excel 列表。这是我的看法:

@using (Html.BeginForm("DownloadAttendeeExcel", "Attendee", FormMethod.Post, new { id = "downloadAttendee", @class = "stdform" }))
 {        <div>
            @Html.TextBoxFor(x => x.EventID, new { id = "eventID" })
        </div>       
       <div>
       @Html.TextBoxFor(x => x.EventName, new { id = "eventName" })
        </div>

 }

这是我的操作,但我无法根据文本框值设置 model.eventID,我不明白为什么。

public ActionResult DownloadAttendeeExcel(AttendeeListItem model)
        {
            Reservation res = new Reservation();
            res.EventID = model.EventID;
            return View();
        }

【问题讨论】:

  • 您不能在BeginForm 上设置值,而是需要使用HiddenFor 或其他输入Html 元素。这是因为只有输入元素在回发时被发回。
  • 不需要隐藏,您的文本框应该可以正常工作。您的视图是否使用 Model AttendeeListItem?视图顶部应该有@model AttendeeListItem。另外:EventName 是否通过而 EventID 不是?
  • 另外:您是使用普通提交按钮还是根据您的表单数据执行 ajax 调用?
  • 我的视图中有模型。我使用 ajax 获得自动完成事件名称,因此事件即将到来,但我的文本框值未发布到 model.EventID

标签: asp.net-mvc asp.net-mvc-4 razor html-helper


【解决方案1】:

你的按钮:

<a class="btn" type="button" id="downloadAttendees" ref="@Url.Action("DownloadAttendeeExcel", "Attendee")" style="width: 150px;">

将执行 HttpGet 并且不会发布您的表单数据。
指示表单提交内容(包含的所有输入字段)的最简单方法是使用 html 提交按钮:

<input type="submit" value="Submit">

【讨论】:

    猜你喜欢
    • 2013-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多