2014-02-24 129 views
2

沿着额外的参数,我想补充的参数(GUID)的控制器的自定义列表。 出于测试目的,我有一个简单的类:通与视图模型MVC 5

public class MyVM 
{ 
    public string Name { get; set; } 
    public Guid Id { get; set; } 

    public List<MySubVM> MySubVms { get; set; } 
} 

public class MySubVM 
{ 
    public string Name { get; set; } 
} 

我展示它在我的网页上这样

@using (Html.BeginForm("DoPost", "Home", FormMethod.Post, new { id = "form", enctype = "multipart/form-data" })) 
{ 

@Html.TextAreaFor(m => m.Name) 
for (int i = 0; i < Model.MySubVms.Count; i++) 
{ 
    @Html.TextBoxFor(m => Model.MySubVms[i].Name) 
} 

    <button class="btn form-control btn-success" type="submit" name="buttonType" value="SaveEvaluation">Save</button> 

    } 

我控制器的方法是这样的

 [HttpPost] 
    public ActionResult DoPost(MyVM vm, List<string> guids) 
    { 
     return View(); 
    } 

jQuery的

<script type="text/javascript"> 
var guids = [{ id: "6650f183-14fa-4247-9639-612c4ca0a232" }, { id: "97aa91a3-28a4-44f3-8d96-f93d5eaef558" }]; 
$.ready(function() { 
    $('form').on('submit', function(event) { 
     event.preventDefault(); 
    }); 
    $.ready(function() { 
     $('form').on('submit', function(event) { 
      event.preventDefault(); 
      $.post({ 
       type: 'POST', 
       url: "/Home/DoPost", 
       dataType: "json", 
       data: { vm: $("form").serialize(), guids: guids }, 
       success: function() { 
        alert("Successful"); 
       } 
      }); 
     }); 

    }); 
}); 

的问题是,该模型被贴到正确的控制器,但GUID列表不起作用。它一直都是空的。我尝试了字符串,这是同样的问题。

+1

公众的ActionResult的doPost(MyVM VM,的FormCollection形式){VAR的GUID =形式[ “的GUID”] ; ... – Tony

+0

@Tony,你应该让这个答案。 – Maess

+0

你应该能够有一个'MainViewModel'有2个属性:'公共MyVM VM {获取;集;}'和'公众的IEnumerable guids'和控制器使用'MainViewModel',而不是'MyVM'。其中'GuidWithIdViewModel'仅仅是一个名为Id – TryingToImprove

回答