0

這是我的問題。MVC:僅從客戶端驗證更新模型的一部分的操作

我有一個由兩個結構組成的模型。

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() 
       }); 

但我不知道是否有可能更新,只有我的模型的一部分(在這種情況下,「providers」部分)。

任何想法來完成我的代碼?我是否正確?我想只有「服務器端功能‘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

是的,你可以使用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');} 
          } 
       }); 
+0

謝謝您的回答。你可以詳細說明「var model = //獲取模型更新」嗎? – PetersLast 2011-04-26 14:55:27

+0

因爲您的目標是更新模型。所以當你在action方法中提供provid時,你只需從db等獲取有問題的模型並更新它的provID字段。你也可以在你的ajax請求中傳遞你的模型的唯一標識符,這樣你可以很容易地從db獲取模型對象 – 2011-04-26 15:00:55

+0

好吧,我會以不同的方式提出我之前的問題,這似乎太簡單了,以至於不真實:)) :什麼是行代碼,它可以獲得當前表單使用(和填充)的「當前模型」?該行的'完整'代碼:'var model = //獲取要更新的模型'? – PetersLast 2011-04-26 16:24:27