javascript - 如何在 NET MVC 3 Razor 中仅触发 JavaScript 函数而无需 Controller 处理请求

标签 javascript asp.net-mvc asp.net-mvc-3 razor

我正在努力解决一些我什至不确定是否可能的事情。

我在 .NET MVC 3 Razor 项目中有一个典型的表单页面。该页面内有一个带有搜索机制的谷歌地图。搜索被封装在一个表单中,该表单调用 JavaScript 函数来在找到位置时更新 map 。

当我尝试使用它时, View 的 Controller 处理请求,并且 Controller 的模型状态无效(因为用户尚未完成表单的其余部分)。结果是重置 map 的页面表示(与我所追求的完全相反)。

这是该 View 的简化版本:

@model OnlineEventReporting.ViewModels.ReportShortViewData
@{
    Layout = "~/Views/Shared/_LayoutGoogleMap_with_all_js_code.cshtml";
}    
<script type="text/javascript">
    function showAddress(address) { [processing code] }
</script>

 @using (Html.BeginForm("Index", "ShortReport", FormMethod.Post, new { name = "shortForm", id = "shortForm", data_ajax = "false" }))
    {
    @Html.ValidationSummary(true)

    Info for the controller to handle:
        @Html.TextBoxFor(model => model.AddressDetail.Street1, new { @maxlength = "50" })

    <!-- I want this to 'fire' the JavaScript 'showAddress' function and for the controller to ignore it -->

    <form style="text-align:center" action="#" onsubmit="showAddress(this.address.value); return false"> 
        <input type="text" size="20" id="address" name="address" value="North Street, Guildford"  /> 
        <input type="submit" value="Search!" /> 
    </form>

    <div id="map" style="width: 100%; height: 400px; margin-left:20px;"></div> 

    More info for the controller to handle:
        @Html.TextBoxFor(model => model.AddressDetail.Street2, new { @maxlength = "50" })

    }

我意识到我在这里的表单中有一个表单,但我不知道如何才能实现此目的,因为我需要在主表单中间提供 map 和搜索功能。

任何帮助将不胜感激。

非常感谢,

克里斯。

最佳答案

您的代码将生成无效的 HTML - 嵌套表单不是有效的 HTML。

问题是 input type="submit" 可能会导致最上面的表单提交,而不是您期望的那样。

为什么没有一个普通的按钮并将函数附加到点击事件上?

关于javascript - 如何在 NET MVC 3 Razor 中仅触发 JavaScript 函数而无需 Controller 处理请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8464568/

相关文章:

javascript - 我可以在非 ajax primefaces 操作的文件响应后执行 javascript 吗?

html - .NET MVC HTML.TextBox 在屏幕上的比例严重失调

database - ASP.net MVC 3 Forms Authentication 项目如何连接到数据库?

asp.net-mvc - ASP.NET MVC 子域授权

asp.net-mvc - MVC3 使用值和名称填充下拉列表

asp.net-mvc-3 - asp.net mvc 3 : deployment. getJson url 不起作用

javascript - object.attr ('value' ) 返回属性值而不是属性值

javascript - jQuery UI Slider - 根据选择而变化的自定义滑动按钮

javascript - 使用 Jquery 隐藏所选项目

c# - 如何在 If 语句中包含 HTML