【发布时间】:2015-08-27 10:48:59
【问题描述】:
在模态对话框上渲染部分视图时遇到 2 个问题。
1) 我使用 ajax 帖子,它调用操作,返回带有联系人列表的部分视图,我更新了 div,但它不显示。如果我关闭并重新加载对话框,它就会显示出来。
2) 局部视图对话框中有 jquery 选择器找到的文本框元素,但 val() 为空。
一直调试它,很好……只是不渲染。
模态:
@model CRM.Model.Shared.ContactSearchModel
<div id="divSearchContactModal" class="modal fade" role="dialog">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<form id="contactSearchForm" class="form-horizontal">
<div class="modal-header">
<h4 class="modal-title">Search / Add Contact</h4>
</div>
<div class="modal-body">
<div class="row">
<div class="col-md-12">
<div class="form-group">
<div class="col-md-4">
@Html.LabelFor(model => model.FirstName, new { @class = "control-label" })
@Html.EditorFor(model => model.FirstName)
</div>
<div class="col-md-4">
@Html.LabelFor(model => model.LastName)
@Html.EditorFor(model => model.LastName)
</div>
<div class="col-md-2">
<button id="contact-search-button" type="button" onclick="Search();" class="btn btn-mercury-modal-search" style="vertical-align: middle">Search</button>
</div>
</div>
</div>
</div>
</div>
<div id="divSearchResultsContent">
</div>
</div>
</form>
</div>
</div>
</div>
Ajax 搜索功能:
function Search() {
//these return empty text for val() !!!
var firstName = $("#FirstName").val();
var lastName = $("#LastName").val();
$.ajax({
type: "POST",
url: "/ContactSearch/Search/",
data: { FirstName: firstName, LastName: lastName },
success: function (data) {
$('#divSearchResultsContent').html(data);
},
error: function (jqXhr, textStatus, errorThrown) {
console.log(textStatus, errorThrown);
}
});
return true;
}
控制器:
[HttpPost]
[OutputCache(Duration = 0)]
public ActionResult Search(ContactSearchModel model)
{
model.FirstName = "Daffy";
model.LastName = "Duck";
var response = _contactManager.SearchContacts(new SearchContactsRequest
{
FirstName = model.FirstName,
LastName = model.LastName
});
if (!response.IsSuccess)
{
throw new Exception(response.ErrorMessage);
}
model.SearchFinished = true;
model.ContactList = response.ContactList;
model.SearchCount = response.ContactList.Count;
return PartialView("_ContactSearchResults", model);
}
_ContactSearchResults 的部分视图
@using CRM.Entities.Common
@model CRM.Model.Shared.ContactSearchModel
<table class="table table-responsive">
<thead>
<tr>
<th>
First Name
</th>
<th>
Last Name
</th>
<th>
DBA Name
</th>
<th>
Address
</th>
<th>
City
</th>
<th>
State
</th>
<th>
Zip
</th>
<th>
Phone
</th>
<th>
</th>
</thead>
<tbody>
@if (Model.SearchFinished)
{
if (Model.SearchCount > 0)
{
foreach (Contact contact in Model.ContactList)
{
<tr>
<th>
@Html.Label(contact.FirstName)
</th>
<th>
@Html.Label(contact.LastName)
</th>
<th>
@Html.Label(contact.DbaName)
</th>
<th>
@Html.Label(contact.ContactAddress)
</th>
<th>
@Html.Label(contact.ContactCity)
</th>
<th>
@Html.Label(contact.ContactState)
</th>
<th>
@Html.Label(contact.ContactZipCode)
</th>
<th>
@Html.Label(contact.PhoneNumber)
</th>
<th>
@*@Html.ActionLink("Select", "Select", "ContactSearch", new { EntityId = Model.EntityId, ContactEntityId = @contact.ContactId, RoleId = Model.RoleId }, null)*@
</th>
</tr>
}
}
else
{
<tr>
<th>
"No contacts found."
</th>
</tr>
}
}
</tbody>
</table>
任何帮助将不胜感激。
谢谢!
【问题讨论】:
-
你能在 jsfiddle 上复制同样的内容吗,jsfiddle.net 用生成的 html (不要在 jsfiddle 中使用 asp.net 代码)
标签: jquery ajax asp.net-mvc partial-views bootstrap-modal