如何在表单提交时更改Html.Beginform()的属性

时间:2013-08-28 11:53:55

标签: javascript jquery asp.net-mvc

到目前为止,我有这个:

 <% foreach (Object object in Collection)
 {
     u<% using (Html.BeginForm("ActionName", "Controller", new { FU = "bar" }, FormMethod.Post, new { ID = "MyID"}))
      {%>
        <input type="submit" value="Submit" />
      <%}
 } %>

 $('#MyID').submit(function() {
     var url = Url.Action("ActionName", "ControllerName");
     var fu = "newValueOfFU"; // New value for FU
     $('#MyID').prop('action', url + "?FU=" + fu);
 });

我想用jQuery

中的值更改FU的值

4 个答案:

答案 0 :(得分:5)

简化答案。

您使用的是错误的重载。请参阅MSDN上的重载列表,了解要使用的内容。

您当前的重载需要将路由信息作为第3个参数。您提供的任何值都将与为站点定义的路由进行匹配。如果任何参数与之匹配,则只需将它们添加为get参数。

您要实现的目标是为表单指定ID或其他属性。这是使用重载来完成的,该重载允许定义html属性(参见Overload on MSDN。例如,

@using(Html.BeginForm("Action", "Controller", FormMethod.POST, new {ID = "MyID"}))

注意:参数的顺序为不同

只需查看生成的html,您就会知道发生了什么。

//更新

使用此

@using(Html.BeginForm("Action", "Controller", new {FU="bar"}, FormMethod.POST, new {ID = "MyID", onsubmit="return sayHello()"}))

这将生成类似于

的html
 <form action="/Controller/Action?FU=Hello" method="post" id="MyID" onsumbit="return sayHello()">

并结合脚本

<script>
    function sayHello()
    {
        alert("Hello");
        return true;
    }
</script>

会向您发出警报,并将FU发送给控制器。

//更新 这是您更新表单的action属性的方法。

<script>
  $('#MyID').submit(function() {
      var url = @Url.Action("Action","Controller");
      var fu = "newValueOfFU"; // New value for FU
      $('#MyID').prop('action', url + "?FU=" + fu;
      return true;
  });
</script>

答案 1 :(得分:0)

您可以使用以下jQuery代码

$('form').submit(function(){
   $(this).attr('ID', newVal);
});

或者您可以为表单指定ID,如

using (Html.BeginForm("ActionName", "Controller", FormMethod.Post, new { @id = "myForm", FU = "Hello" }))

并使用它来挂钩提交

上的事件
$('#myForm').submit(function(){
       $(this).attr('ID', newVal);
    });

答案 2 :(得分:0)

您可以在HTMLAttributes中添加onSubmit事件处理程序并更改其中的ID。

<% using (Html.BeginForm("ActionName", "Controller", new { ID = "Hello", onsubmit = "return changeID();"  }, FormMethod.Post))
           {%>
        <input type="submit" value="Submit" />
        <%} %>

并在页面的某处添加以下脚本。

<script type="text/javascript">
    function changeID() {
           document.getElementById('Hello').id  = 'Your_New_Value';         

           return true;
    }
</script>

答案 3 :(得分:0)

<script type="text/javascript">
$(document).ready(function () {

    $('#formID').submit(function (e) {
        e.preventDefault();
         $('#yourOtherID').attr(newValue);
    });

});
</script>