2013-01-15 3 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

정말 그 코드를 이해하지 않는다, 나는 진정한 초보자 :(당신이 그것에 POST를 사용하려는 경우가 HttpPost''이 방법에 속성을 할 필요가 없습니다 – MartinL

0

답변

은 매우 간단합니다. 액션 메소드 위에 [HttpPost] 속성이 없습니다.

하지만 모델을보기에 표시하는 방법을 모르겠습니다. 당신은 예를 들어, 어떤 모델이있는 경우

는 :

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

그리고 당신은 양방향 coommunication의 betweend 뷰와 컨트롤러가하려는 경우 당신이 HTML에서보기를 만들 필요를이 길을 어떻게 형상 - 보기에서 서버와 통신합니다. 첫 번째 양식이 submited 될 때 뷰가 두 번째보기에서 전달 된 모델을 얻는 새로운 모델 객체를 보내

@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

해요 'HttpPost'는이 메소드가 HTTP POST를 통해서만 사용될 수 있다고 선언합니다. – mipe34

관련 문제