【问题标题】:How can I name a form with Html.BeginForm()?如何使用 Html.BeginForm() 命名表单?
【发布时间】:2011-04-10 15:32:54
【问题描述】:

如何使用Html.BeginForm() 为 ASP.NET MVC 中的表单命名? 我只想要名称,而不是动作或控制器名称,因为我想通过 Javascript 发布它。我认为它应该类似于Html.BeginForm(id = "frm")

我尝试了以下方法:

Html.BeginForm(null,null,new{id="frm",name="frm})

Html.BeginForm(new{@id="frm",@name="frm})

但是上面的代码会产生这样的输出:

<form action="/Main/Index/Id?name=Id" method="post">

【问题讨论】:

    标签: asp.net-mvc razor


    【解决方案1】:
    Html.BeginForm(null, null, FormMethod.Get, new { name = "frm", id = "frm" })
    

    您需要使用 JavaScript 捕获表单提交

    【讨论】:

    • 谢谢,但是您的解决方案会生成此代码
    • 谢谢它的作品,再次感谢
    • 帮助了我很多,你的博客也是一种享受。感谢 BritishDeveloper :)
    • 确保将 id = "frm" 放在 GET 或 POST 之后,否则 id 值将传递给控制器​​(如果有)。
    【解决方案2】:

    使用 MVC2,这对我有用:

    <% using (Html.BeginForm("Index", "Home", null, FormMethod.Post, new {@id = "myForm", @name = "myForm"})) {%>
    

    【讨论】:

      【解决方案3】:
      @HTML.BeginForm("Target-ViewName where you want to post the page","Controller Name",new {@name="Name of the Form", id="ID of the Form"}) 
      { //form here
      }
      

      【讨论】:

      • 我认为您的意思是“您要发布数据的目标操作方法”,而不是“您要发布页面的目标视图名称”。
      【解决方案4】:

      取自这个答案:How to pass in ID with Html.BeginForm()?

      你能不能只做:

      Html.BeginForm(new {@id="Id", @name="Id"}); 
      

      搜索答案是值得的,因为我发现很多我想问的事情已经遇到了。

      【讨论】:

      • 您正在添加路线值。不是 html 属性
      • 我看到你在传递空值的地方的答案,我确实认为你可以只使用命名参数的默认值并传入附加属性列表以附加到输出 HTML
      • 我之前尝试过您的解决方案,但它生成的代码类似于 "
        "
      • 很抱歉,我确实认为它是这样工作的——显然不是。在这种情况下,这可能是一个很好的例子,说明何时提供您自己的 HTML 扩展方法,或者只是恢复到良好的旧 HTML。
      猜你喜欢
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2017-05-06
      • 1970-01-01
      • 1970-01-01
      • 2015-12-11
      • 2015-08-21
      • 1970-01-01
      相关资源
      最近更新 更多