@ URL.Action on按钮单击以加载局部视图

时间:2013-04-15 20:02:42

标签: jquery asp.net-mvc-3

在我的表单中,我有电子邮件字段,搜索按钮和部分视图的占位符

@using (Html.BeginForm())
{   
    Html.TextBoxFor(model => model.emailAddress, new { style = "width:400px" , @class = "emailValue"})
    @Html.ValidationMessageFor(model => model.emailAddress) 

<button name="button" value="search" id="SearchResultbtn">
                    Search</button>
 <div id="searchResult">
                </div>

}

使用jquery

在部分视图中显示搜索结果
$(document).ready(function (e) {
    $("#SearchResultbtn").click(function (e) {
        e.preventDefault();
        $("#searchResult").load('@Url.Action("AdminSearchResult", "Administration")');
    });
});   

在我的控制器中,我有一个主要的Action方法

[HttpPost]
public ActionResult CreateAdmin(string button, Administration admin)
{
}

和处理部分视图的Action方法

public ActionResult AdminSearchResult(string sortOrder, int? page)
{
    var result = Administration.GetAdministrationList();
    return PartialView("AdminSearchResult", result);
}

现在我想要的是,如果电子邮件有效,首先在按钮点击时验证电子邮件,然后加载部分视图,如果没有抛出错误消息。

1 个答案:

答案 0 :(得分:0)

你又来了,@ user2225604!你不需要任何脚本或任何想要做的事情。根据我之前的回答,你已经启用了不显眼的js,所以......

从你提到的行为来看,我认为你只需要这样的事情:

@using (Ajax.BeginForm("AdminSearchResult", "ControllerName", null, new AjaxOptions { UpdateTargetId = "searchResult", InsertionMode = InsertionMode.Replace }))

而不是:

@using (Html.BeginForm())

然后你可以完全摆脱脚本。您可能必须在Ajax.BeginForm中为该sortOrder参数传递routeValue,但除此之外,您应该很高兴。