В моей ASP MVC3 просмотра я использую следующий Ajax вызов, чтобы получить частичный вид и добавить парциальное к конкретному fieldset
Частичный вид на возвращение общей макет страницы, а
Ajax
$("#addItem").click(function() {
alert("here");
$.ajax({
url: '@Url.Action("BlankDropDownItem", "DropDownValues")',
dataType: 'html',
cache: false,
success: function (html) {
alert(html);
$("#items").append(html);
}
});
return false;
});
Этот Ajax вызывает очень простой метод контроллера ViewResult
, который должен возвращать частичный вид.
Контроллер
public ViewResult BlankDropDownItem()
{
return View("DropDownItemPartial", new DropDownValues());
}
Это весь код в парциальное. Когда я создал его в VS 2010 (я сделал это дважды сейчас, чтобы убедиться), я установил флажок «Частичный просмотр», который выделяет параметр «Использовать общий макет».
Частичный вид
@model Monet.Models.DropDownValues
<div class="editor-label">
@Html.LabelFor(model => model.AllowedValue)
</div>
<div class="label-field">
@Html.EditorFor(model => model.AllowedValue)
@Html.ValidationMessageFor(model => model.AllowedValue)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.DisplayValue)
</div>
<div class="label-field">
@Html.EditorFor(model => model.DisplayValue)
@Html.ValidationMessageFor(model => model.DisplayValue)
</div>
По какой-то причине, когда я положить alert
на html
объекта, возвращенного в этой строке функции Ajax success
success: function (html) {
Я вижу, что html
объект возвращает весь HTML из общего макета, поэтому он по существу возвращает целую страницу вместо частичного представления. Вот скриншот того, как он выглядит, как только вызов Ajax завершен.
Удивительно, спасибо! FYI, это должен быть тип возврата ActionResult. Он не будет компилироваться с помощью 'ViewResult'. – NealR
Ха-ха, да, да! : D полностью просто скопировал ваш текст. Рад, что смог помочь! – technicallyjosh