I am having 2 problems rendering a partial view on a modal dialog.
1) I use an ajax post, it calls the action, returns partial view with a list of contacts, I update the div, but it doesn't display. If I close and reload the dialog, it then displays.
2) there are textbox elements on the partial view dialog that the jquery selector finds but the val() is empty.
Debugged it all the way through and is fine...just doesn't render.
modal:
@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 in Search function :
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;
}
Controller:
[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);
}
Partial View for _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>
Any help would be appreciated.
Thanks!