2013-01-15 168 views
-1

不久之前,我在這裏要求我在jQuery中創建的ToDoList的幫助。盡我所能,我盡力完成了這一切,但是,我轉向了MVC。我看了一些教程,並在書中讀了幾節課,但我仍然不明白。我完全理解的是關注的分離(在大學中學到的)。我認爲,一旦我學會使用它,我會愛上它。所以,我的問題可能很簡單。開始學習ToDoList的MVC

我知道如何製作視圖和控制器,以及如何將它們「鏈接」在一起。我也知道ViewBag(我可能會添加很聰明),但我不知道如何讓模型出現在視圖中。我已經完成了課程,但也許我在這裏錯過了一些東西。

任何幫助將是巨大的!

謝謝。

順便說一句,這裏是我的代碼:

ToDoListController: 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using System.Web.Routing; 
using System.Web.Security; 
using MvcMovie.Models; 

namespace MvcMovie.Controllers 
{ 
    public class ToDoListController : Controller 
    { 
     // 
     // GET: /ToDoList/ 

     public ActionResult Index(ToDoList model) 
     { 
      return View(model); 
     } 

    } 
} 

ToDoListModels: 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

namespace MvcMovie.Models 
{ 
    public class ToDoList 
    { 
     public int ListID { get; set; } 
     public String TaskName { get; set; } 
     public string Description { get; set; } 
     public string Name { get; set; } 
    } 
} 

回答

2

你嘗試發送數據的JSON? 如果您使用這些字段創建視圖,則可以通過json發送數據。

例如

@using(Html.BeginForm("ToDoList","IndexResponse",new{Model.ListID})) 
{ 
    @Html.EditorFor(model => model.TaskName) 
... 
} 

public ActionResult IndexResponse(ToDoList model) 
{ 
    return View(model); 
} 
+0

我真的不明白的代碼,我是一個真正的初學者:( – MartinL

0

答案很簡單。您在Action方法上方缺少[HttpPost]屬性。

但我不知道如何讓模型出現在視圖中。

當你有例如某型號:

public class TestViewModel 
{ 
    public int TestId { get; set; } 
    public string TestStringProperty { get; set; } 
} 

如果你想擁有雙向coommunication betweend視圖和控制器,你必須創建一個HTML視圖形式 - 這是怎樣的方式您從視圖與您的服務器通信。

@model NamespaceOfYourModel.TestViewModel 

@using(Html.BeginForm("TestAction", "ToDoListController", FormMethod.Post)) 
{ 
    @Html.HiddenFor(m => m.TestId) 
    @Html.LabelFor(m => m.TestStringProperty) 
    @Html.EditorFor(m => m.TestStringProperty) 

    <input type="submit" name="submitForm" value="Save" /> 
} 

現在你必須寫兩個方法wchich將:首先發送新的模型對象視圖其次正從視圖傳遞的模型時,表格將所需提交。

public ActionResult TestAction() 
{ 
    //creating new object of your model 
    TestViewModel testModel = new TestViewModel(); 

    //it will be 1 in the second method too 
    testModel.TestId = 1; 
    //passing model to the view 
    return View(testModel); 
} 

//You say you want that method to be called when form is submited 
[HttpPost] 
public ActionResult TestAction(TestViewModel testModel) 
{ 
    if(testModel != null) 
    { 
     //you will see that the testModel will have value passed in a view 
     var imNotNull = testModel; 
    } 
} 
+1

如果你想使用POST上你不需要有'HttpPost'的方法屬性 - 如果你不不指定HTTP方法,你可以使用它們中的任何一個,'HttpPost'聲明這個方法只能通過HTTP POST來使用。 – mipe34