这是我的问题。
我有一个由两个结构组成的模型。
public class MyDoubleStructureModel
{
public MyDoubleStructureModel(CLIENT MyClient, List<PROVIDER> MyProviders);
CLIENT MyClient {get;private set;};
List<PROVIDER> MyProviders {get;private set;} ;
}
在加载页面的开始加载这两个对象。 “MyProviders”对象正在填充RenderPartial:
<div id="dialog">
<% Html.RenderPartial("UCProviders", Model.MyProviders); %>
<%} %>
</div>
在我的客户端表单上,我有一个下拉列表,应该允许用户更新部分视图中包含的数据。 它应该在不重新加载视图的情况下进行更新。
我的想法是调用(例如通过JQuery)一个函数服务器端,它只更新我模型的一部分。
$("#ddlChangeProviders").change(function() {
$.ajax({
type: "POST",
url: "/Client/UpdateListProvider/?provID=" + $("#ddlChangeProviders").val()
});
但我不知道是否有可能更新,只有我的模型的一部分(在这种情况下是“提供者”部分)。
有没有想完成我的代码?我正确的方式吗?我想只有“服务器端函数'UpdateListProvider'(在PartialView中显示提供者的更新列表)丢失了......
这应该是我的函数UpdateListProvider
public ActionResult UpdateListProvider(int provID)
{
List<PROVIDER> MyProvidersInMyModel = _entities.Providers.Where(c => c.PROV_ID == provID).ToList();
var model = new MyDoubleStructureModel(null, MyProvidersInMyModel)
return View(model);
}
感谢您的帮助。 (问我描述是否不够清楚)
答案 0 :(得分:0)
是的,您可以使用jquery和常规表单发布更新模型的部分内容。现在您只需编写UpdateListProvider ActionREsult并更新模型的ProviderID字段。你可以选择返回true或false,显示数据是否成功更新
public ActionResult UpdateListProvider(int porvID)
{
var model = //get model to update
model.provID = provID
if(Save(model))return Content("true");
return Content("false");
}
在客户端,您可以编写成功回调ajax以显示错误或成功消息
$("#ddlChangeProviders").change(function() {
$.ajax({
type: "POST",
url: "/Client/UpdateListProvider/?provID=" + $("#ddlChangeProviders").val(),
success:function(data)
{
if(data == 'true'){alert('updated successfully');}
else{alert('could not update record');}
}
});