我真的有一组简单的代码来恢复一个由下拉列表触发的数据。
这是剧本:
function () {
$('#ProviderID').change(function () {
$.ajax({
url: '/servicesDisplay/Index',
type: 'Get',
data: { id: $(this).attr('value') },
success: function (result) {
// The AJAX request succeeded and the result variable
// will contain the partial HTML returned by the action
// we inject it into the div:
$('#serLocations').html(result);
}
});
});
这是控制器:
public ActionResult Index(string id)
{
int prid = Int32.Parse(id.Substring(0, (id.Length-1)));
string mulitval = id.Substring((id.Length-1), 1).ToString();
System.Data.Objects.ObjectResult<getProviderServiceAddress_Result> proList = theEntities.getProviderServiceAddress(prid);
List<getProviderServiceAddress_Result> objList = proList.ToList();
SelectList providerList = new SelectList(objList, "AddressID","Address1");
//ViewBag.providerList = providerList;
return PartialView("servicesDisplay/Index", providerList);
}
这是观点:
@model OCS_CS.Models.servicesDisplay
<div>
@Html.DropDownList(model => model.ServiceAdderssID, (IEnumerable<SelectListItem>)model)
</div>
当下拉通过值时。应用确实击中了控制器。但它以浅红色高亮显示下降,视图从不显示。
答案 0 :(得分:0)
你正在进行GET,没有意义将数据传递给ajax,你可以为POST传递数据:
首先,将值放在URL:
function () {
$('#ProviderID').change(function () {
$.ajax({
url: '/servicesDisplay/Index/' + $(this).attr('value'),
type: 'Get',
success: function (result) {
// The AJAX request succeeded and the result variable
// will contain the partial HTML returned by the action
// we inject it into the div:
$('#serLocations').html(result);
}
});
});
其次,将方法标记为GET
[HttpGet]
public ActionResult Index(string id)
希望这能帮到你!
答案 1 :(得分:0)
试试这个使用jquery load
方法的简短版本。
$(function(){
$('#ProviderID').change(function () {
$('#serLocations').load("@Url.Action("Index","ServicesDisplay")?id="
+$(this).val());
});
});
如果您想避免缓存结果,可以发送一个唯一的时间戳和查询字符串以避免缓存。
$('#serLocations').load("@Url.Action("Index","ServicesDisplay")?id="
+$(this).val()+"&t="+$.now());
答案 2 :(得分:0)
您的代码存在很多问题。首先,为您的视图定义的模型是:
@model OCS_CS.Models.servicesDisplay
但是在您的操作中,您通过传入SelectList来调用此视图:
SelectList providerList = new SelectList(objList, "AddressID","Address1");
return PartialView("servicesDisplay/Index", providerList);
这不会飞,因为模型与类型不匹配。秒问题是你将这个SelectList转换为IEnumerable。这也行不通。你需要转换为SelectList:
@Html.DropDownList(model => model.ServiceAdderssID, (SelectList)model)
但是再一次,直到您将动作中的模型类型与视图中的模型相匹配,这一切都无效。我建议你安装Fiddler来帮助你确定你得到了什么样的错误。