在我的表单中,我有电子邮件字段,搜索按钮和部分视图的占位符
@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);
}
现在我想要的是,如果电子邮件有效,首先在按钮点击时验证电子邮件,然后加载部分视图,如果没有抛出错误消息。
答案 0 :(得分:0)
你又来了,@ user2225604!你不需要任何脚本或任何想要做的事情。根据我之前的回答,你已经启用了不显眼的js,所以......
从你提到的行为来看,我认为你只需要这样的事情:
@using (Ajax.BeginForm("AdminSearchResult", "ControllerName", null, new AjaxOptions { UpdateTargetId = "searchResult", InsertionMode = InsertionMode.Replace }))
而不是:
@using (Html.BeginForm())
然后你可以完全摆脱脚本。您可能必须在Ajax.BeginForm中为该sortOrder参数传递routeValue,但除此之外,您应该很高兴。