不久前,我在这里寻求关于我在jQuery中创建的ToDoList的帮助。尽管如此,我还是设法尽我所能完成了这项工作。我已经看过一些教程并在书上学了几课,但我仍然不明白。我完全理解的是关注点的分离(在大学里学到的)。我想,一旦我学会使用它,我会喜欢它。所以,我遇到的问题可能很简单。
我知道如何制作视图和控制器,以及如何将它们“链接”在一起。我也知道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; }
}
}
答案 0 :(得分:2)
你尝试发送json的数据吗? 如果使用这些字段创建视图,则可以通过json发送数据。
例如
@using(Html.BeginForm("ToDoList","IndexResponse",new{Model.ListID}))
{
@Html.EditorFor(model => model.TaskName)
...
}
public ActionResult IndexResponse(ToDoList model)
{
return View(model);
}
答案 1 :(得分:0)
答案很简单。您在Action方法上方缺少[HttpPost]
属性。
但我不知道如何让模型出现在视图中。
当你有一些模特例如:
public class TestViewModel
{
public int TestId { get; set; }
public string TestStringProperty { get; set; }
}
如果您希望在视图和控制器之间进行双向通信,则必须以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" />
}
现在你必须编写两种方法:首先将新模型对象发送到视图,然后在提交表单时获取从视图传递的模型。
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;
}
}