添加onsubmit事件以在MVC3中调用JS函数

Ser*_*i G 8 html javascript c# asp.net-mvc asp.net-mvc-3

我在MVC3项目中从表单调用JS方法时遇到问题:我有一个"搜索"页面没有带两个按钮的表单 - 搜索和取消.点击搜索在ProductDefinition中运行JS函数runSearch.

<div id="productSearch-dialog" class="modal fade" style="width: 1000px; display: none">
<div class="modal-header">
    <button class="close" aria-hidden="true" data-dismiss="modal" type="button">×</button>
    <h3>Search Results</h3>
</div>
<div class="modal-body" style="height: 650px;">
    <div>
        <input id="inputname" type="text" /><font class="red-font" id="lblrequired" style="display: none">*</font>
    </div>
    <div id="searchresultcontain" class="grid">
    </div>
    <div id="Pagination" class="pagination">
    </div>
</div>
<div class="modal-footer">
    <button class="btn btn-primary" onclick="productDefinition.runSearch();">Search</button>
    <button class="btn btn-primary" data-dismiss="modal">Cancel</button>
</div>
Run Code Online (Sandbox Code Playgroud)

当我按下时如何运行这个JS方法(runSearch)?据我所知,这将是onsubmit事件,它是form事件,所以我需要添加带有onsubmit属性的表单元素.我用BeginForm帮助器方法尝试了周围的输入字段:

@using (Html.BeginForm(new { onsubmit = "productDefinition.runSearch();" }))
{
    <input id="inputname" type="text" /><font class="red-font" id="lblrequired" style="display: none">*</font>
    <input type="submit" value="Submit" style="visibility: hidden" />
}
Run Code Online (Sandbox Code Playgroud)

但它似乎没有工作 - 当我按下输入我出于某种原因获取页面的来源并到达localhost /?onsubmit = productDefinition.runSearch()URL.
可能是问题的根源是什么?如何为onsubmit和onclick获得相同的行为?

Dar*_*ren 11

 @using (Html.BeginForm(new { onsubmit = "return runSearch();" }))



<script type="text/javascript">
    function runSearch() {
           // your logic to perform the search.
           return true;
    }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 我认为这不会起作用,因为MVC会将您的参数视为路由值的集合 - http://msdn.microsoft.com/en-us/library/dd470793(v=vs.108).aspx (4认同)
  • 但是HtmlHelper.BeginForm只有两个重载,它们采用单个参数,并且都将其威胁为routeValues.您的链接也证明了这一点,他们正在指定ID属性,如下所示:`Html.BeginForm(null,null,FormMethod.Post,new {id ="myForm"})` (2认同)
  • 我参加聚会有点晚了,但我同意谢尔盖的看法。`Html.BeginForm(null, null, FormMethod.Post, new { onsubmit = "return someJsScript();"})` 对我有用。null 参数在渲染时仅使用默认值 (2认同)