-1

不久前,我在这里寻求有关我在 jQuery 中创建的 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; }
    }
}
4

2 回答 2

2

您是否尝试发送 json 的数据?如果您使用这些字段创建视图,则可以通过 json 发送数据。

例如

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

public ActionResult IndexResponse(ToDoList model)
{
    return View(model);
}
于 2013-01-15T21:04:34.510 回答
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;
    }
}
于 2013-01-15T22:15:30.887 回答