2012-09-09 35 views
0

選擇標記究竟應該如何映射到MVC模型變量,我嘗試了所有我可能想到的方法,但是每次檢查控制器上的post方法時,變量假設綁定到下拉列表返回null。HTML下拉列表未映射到MVC模型

查看:

<script type="text/javascript"> 
var counter = 1; 
$('#btnAddLocation').click(function (e) { 
    e.preventDefault(); 
    $("#tblAddLocation").find('tbody') 
      .append($('<tr>') 
       .append($('<td>') 
        .append($('@Html.LabelFor(m => m.Location)') 
        ) 
       ) 
       .append($('<td>') 
        .append($('<select name=Location id=Location' + counter++ + ' class=gradientTextbox>') 
        ) 
       ) 
       .append($('<td>') 
        .append($('@Html.LabelFor(m => m.Description)') 
        ) 
       ) 
       .append($('<td>') 
        .append($('@Html.EditorFor(m => m.Description)') 
        ) 
       ) 
      ); 

    $.getJSON("/Locations/GetAllLocations", function (data) { 
     var items = "<option selected></option>"; 
     $.each(data, function (i, item) { 
      items += "<option value='" + item.Value + "'>" + item.Text + "</option>"; 
     }); 

     $("#Location" + (counter - 1)).html(items); 
    }); 
}); 
</script> 

控制器:

[HttpPost] 
    public ActionResult ActionName(MyModel model, List<string> Location, List<string> Description) { 
     return Json(new { success = true }); 
    } 

在控制器代碼說明變量工作正常,但在列表的位置返回正確的計數,但所有項目爲空。

有關如何處理此問題的任何建議?

回答

0

嗯,我想出瞭解決方案。

Html.DropDownListFor版本

<select id="Location" name="Location" class="gradientTextbox"> 
    <option>option 1</option> 
    <option>option 2</option> 
    <option>option 3</option> 

我的版本

<select id="Location1" class="gradientTextbox" name="Location"> 
    <option selected=""></option> 
    <option value="null">option 1</option> 
    <option value="null">option 2</option> 
    <option value="null">option 3</option> 

察覺的細微差別,這個問題的真正的問題在於這行代碼:

items += "<option value='" + item.Value + "'>" + item.Text + "</option>"; 

爲了修復我的代碼,上述行應替換爲:

items += "<option>" + item.Text + "</option>"; 

問題修復。感謝您的幫助@加貝

0

對於綁定工作,Location應該是string的值。它不會通過所有<option>的,相反,它會通過電流selectedvalue

[HttpPost] 
public ActionResult ActionName(MyModel model, string Location, List<string> Description) { 
    return Json(new { success = true }); 
} 
+0

試過了,沒有工作。位置仍然返回爲空。 – theStig