2017-04-12 58 views
-1

我有顯示在模式窗口的局部視圖:後從MVC視圖沒有得到綁定到控制器的型號

public ActionResult Details(string test) 
{ 
    var model = _taskService.GetDocumentTasks(test); 

    return PartialView("_Details", new CustomViewModel { TaskList = model.ToList() }); 
} 

public class CustomViewModel 
{ 
    public DocumentStatus Status { get; set; } 
    public IList<DocumentTask> TaskList { get; set; } 
} 

我能夠循環任務列表視圖並繪製這樣的表單字段:

@model CustomViewModel 

@using (Html.BeginForm()) 
{ 
    @for (int i = 0; i < Model.TaskList.Count(); i++) 
    { 
     @Html.HiddenFor(m => m.TaskList[i].TaskId) 

     <div class="col-sm-6 col-md-4"> 
      <img src="@Html.EditorFor(m => m.TaskList[i].DocumentPath)">         
      .. other form items here 
     </div>      
    } 

<input class="btn btn-primary" type="submit" value="Save" /> 
} 

這將顯示錶單域,但是當我單擊提交按鈕時,發送給控制器的模式爲空。我嘗試了幾種不同的方式來綁定它,但沒有成功。以下控制器上的模型始終爲空。任何想法如何將提交的表單細節綁定到控制器模型?

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Details(CustomViewModel model) 
    { 
    } 

謝謝。

+0

你確認提交時「Details」操作正在被擊中? – mxmissile

+0

是的,它被擊中,但模型始終爲空。 – 03Usr

+0

您是否已經仔細檢查過這些字段是否已被序列化併發布?使用瀏覽器的開發工具來檢查正在生成的請求。 – sleeyuen

回答

0

這將工作。我做了一些細微的變化,所以請遵循這樣的:

控制器/型號:

public class HomeController : Controller 
{ 
    public class TaskService 
    { 
     public Collection<DocumentTask> GetDocumentTasks(string test) 
     { 
      Collection<DocumentTask> aCollection = new Collection<DocumentTask>(); 

      var documentTaska = new DocumentTask { TaskId = "patha", DocumentPath = "~/Images/w.JPG" }; 
      var documentTaskb = new DocumentTask { TaskId = "pathb", DocumentPath = "~/Images/w.JPG" }; 
      var documentTaskc = new DocumentTask { TaskId = "pathc", DocumentPath = "~/Images/w.JPG" }; 
      var documentTaskd = new DocumentTask { TaskId = "pathd", DocumentPath = "~/Images/w.JPG" }; 
      aCollection.Add(documentTaska); 
      aCollection.Add(documentTaskb); 
      aCollection.Add(documentTaskc); 
      aCollection.Add(documentTaskd); 
      return aCollection; 
     } 
    } 

    public class DocumentStatus { } 

    public class DocumentTask 
    { 
     public string TaskId { get; set; } 
     public string DocumentPath { get; set; } 
     public string UserDataToProveItWorking { get; set; } 
    } 

    public class CustomViewModel 
    { 
     public DocumentStatus Status { get; set; } 
     public IList<DocumentTask> TaskList { get; set; } 
    } 

    TaskService _taskService = new TaskService(); 

    public ActionResult Overview() 
    { 
     return View(); 
    } 

    public ActionResult Details(string test) 
    { 
     var model = _taskService.GetDocumentTasks(test); 

     return PartialView("_Details", new CustomViewModel { TaskList = model.ToList() }); 
    } 

    [HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Details(CustomViewModel model) 
    { 
     return View("Overview"); 
    } 

查看Overview.cshtml:

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Overview</title> 
</head> 
<body> 
    <div> 
     @Html.ActionLink("GetPartialView", "Details", new { test = "aTestValue"}) 
    </div> 
</body> 
</html> 

管窺_Detials.cshtml

@{ 
    Layout = null; 
} 

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Overview</title> 
</head> 
<body> 
    <div> 
     @Html.ActionLink("GetPartialView", "Details", new { test = "aTestValue"}) 
    </div> 
</body> 
</html> 
相關問題