Ajax 使用Jquery收集数据,使用数据从控制器获取部分视图,并将传递的信息附加到页面末尾
当从下拉菜单中选择某个选项时,我试图将部分视图附加到“当前显示的页面”的末尾 这是我视图中的下拉列表:Ajax 使用Jquery收集数据,使用数据从控制器获取部分视图,并将传递的信息附加到页面末尾,ajax,asp.net-mvc,jquery,partial-views,Ajax,Asp.net Mvc,Jquery,Partial Views,当从下拉菜单中选择某个选项时,我试图将部分视图附加到“当前显示的页面”的末尾 这是我视图中的下拉列表: <div> @Html.DropDownListFor(x => x.DropDownInfo, Model.Info, "DefaultSelection") @Html.ValidationMessageFor(model => model.Courses) </div> 这是我的控制器中使用PartialView进行回
<div>
@Html.DropDownListFor(x => x.DropDownInfo, Model.Info, "DefaultSelection")
@Html.ValidationMessageFor(model => model.Courses)
</div>
这是我的控制器中使用PartialView进行回复的部分(我希望将下拉选择中的字符串传递到此控制器,最终用于填充PartialView表单中的字段):
局部视图(在重要的情况下):
@使用(Html.BeginForm()){
@Html.ValidationSummary(true)
课程模板
@LabelFor(model=>model.Title)
@EditorFor(model=>model.Title)
@Html.ValidationMessageFor(model=>model.Title)
}
如果我完全错误地处理这种情况,我愿意接受建议
我的目标是让用户从下拉菜单中选择一个“模板”,并让该模板的数据自动填充到下拉菜单下的表单中
我的Jquery非常粗糙-我使用它作为指南您的视图中应该有一个div
<div id ="divToAppend">
</div>
但是,听起来是正确的-如果我做了这些更改,从下拉列表中选择一个选项仍然没有任何作用。我一定是遗漏了什么。你确定你收到了控制器的任何响应吗?你可以通过检查“data”变量是否为null来检查这一点。它一定没有正确刷新,它可以正常工作-真诚地感谢你。事实上,改变的是我使用的是Chrome而不是IE-这在IE 9中不起作用有什么原因吗?(在chrome中工作)我能想到的唯一原因是IE中没有启用Javascript,请检查一下
public PartialViewResult PreFillCourse(string selectedFromDropDown)
{
ViewBag.selectedString = selectedFromDropDown;
MyViewModel preFill = new MyViewModel
{
Title = selectedFromDropDown, // I am using this to pre-fill a field in a form
};
return PartialView("_PartialViewForm", preFill);
}
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>CourseTemplates</legend>
<div class="editor-label">
@Html.LabelFor(model => model.Title)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.Title)
@Html.ValidationMessageFor(model => model.Title)
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div id ="divToAppend">
</div>
$(document).ready(function() {
$("#DropDownInfo").change(function() {
var strSelected = "";
$("#DropDownInfo option:selected").each(function() {
strSelected += $(this)[0].value;
});
var url = "/Controller/PreFillMethod/?MethodString=" + strSelected;
$.post(url, function(data) {
$('#divToAppend').html(data);
//*****
// Assuming everything else is correct,
// what do I do here to have my partial view returned
// at the end of the currently displayed page?
//*****
});
});
});