2017-04-12 7 views
-1

にバインドを得ることはありません。ポストは、私は、モーダルウィンドウに表示されている部分図を持っているコントローラモデル

@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" /> 
} 

これは、フォームのフィールドが表示されますが、私は、送信ボタンをクリックすると、コントローラに送信され、モーダルはnullです。私はそれをバインドするいくつかの異なる方法を試みたが、成功していない。下のコントローラ上のモデルは常にnullです。送信されたフォームの詳細をコントローラモデルにバインドする方法はありますか?

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

ありがとうございました。

+0

ます提出されたときに 'Details'アクションがヒットしていることを確認しましたか? – mxmissile

+0

はい、ヒットしますが、モデルは常にnullです。 – 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> 
関連する問題