2012-10-26 137 views
0

找不到任何錯誤,無法在任何地方找到答案。我的問題是我的視圖模型後沒有更新視圖bean的改變視圖模型更改後沒有視圖更新

視圖模型:

public class OrderView 
{ 
    public Customer Customer { get; set; } 
    public Order Order { get; set; } 
} 
public class Order 
{ 
    public int OrderId { get; set; } 
    public int CustomerId { get; set; } 
    public List<string> DomenNames { get; set; } 
} 
public class Customer 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Telephone { get; set; } 
    public string Email { get; set; } 
} 

控制器:

private OrderView ov; 
public ActionResult Index() 
{ 
    return View(ov); 
} 

[HttpPost] 
public ActionResult Index(OrderView model, FormCollection collection) {    
    return View("done"); 
} 
public ActionResult BlankEditorRow(OrderView model) { 
    ov = model; 
    ov.Order.DomenNames.Add(""); 
    return View("Index",ov) ; 
} 

查看:

@using (Html.BeginForm("Index","Order",FormMethod.Post, new {id = "createOrder"})) { 
@Html.ValidationSummary(true) 
<fieldset> 
    <legend>Order</legend> 

    <div class="editor-label"> 
     @Html.LabelFor(model => model.Order.DomenNames) 
    </div> 

    @for(int i = 0; i < Model.Order.DomenNames.Count; i++) { 
     <div> 
      @Html.EditorFor(item => item.Order.DomenNames[i]) 
     </div> 
    } 

    <button type="button" id="b1" onclick="setallert()" >Click me</button> 
... 

和腳本:

<script type="text/javascript"> 
    function setallert() { 
     $.ajax({ 
      url: "Order/BlankEditorRow", 
      data: $('#createOrder').serialize(), 
      cache: false, 
      success: function (data) { 
       ...? 
      } 
     }); 
    };  
</script> 

將模型傳遞給控制器​​並通過視圖進行調試時,我可以看到模型已更改,但在某些情況下,視圖中沒有任何事情發生。它看起來像舊模式已到位。

+2

你正在做一個阿賈克斯帖子,但你沒有做任何事情來更新成功視圖中的內容;您在成功回調中只有「* ...?*」。你問:如何顯示ajax文章的結果? –

+0

是的。我不熟悉JavaScript。它應該以某種方式添加新的@ Html.EditorFor(item => item.Order.DomenNames [i])元素。 – NikVjazem

+0

我建議尋找Razor的Ajax幫手,這對於這類東西很有用。 – McGarnagle

回答

0

我已經解決了我的問題。我發表我的情況下,解決有人需要它:

控制器:

public ActionResult BlankEditorRow(OrderView model) { 
    model.Order.DomenNames.Add(""); 
    return PartialView("Index", model) ; 
} 

查看:

<div class="editor-label"> 
    @Html.LabelFor(model => model.Order.DomenNames) 
</div> 
<div id="tt"> 
    @{Html.RenderPartial("OrderDN", this.Model);} 
</div> 
<button type="button" id="addBtn">Click me</button> 

腳本:

$("#addBtn").click(function() { 
    $.get('@Url.Action("BlankEditorRow", "Order")', $('#createOrder').serialize(), function (res) { 
     document.getElementById("tt").innerHTML = res; 
    }); 
}) 

我希望這將是有用的人