如何使用defaultModelBinder将我的视图绑定到我的模型?

时间:2016-11-18 16:46:41

标签: c# asp.net-mvc

我试图通过我的视图将对象$q.all()传递给我的控制器,我不知道该怎么做。 我试图在我的视图中做一个@Model Guy,但那不起作用,所以我没有想法如何将一个对象传递给我的Create方法,而不仅仅是一些变量,因为我不知道想在方法中构建此对象。 根据我从研究中的理解,我必须使用defauldModelBinder来将我的模型绑定到视图中,但是我并不是很清楚如何做到这一点,因为我是一个完整的新手。 有小费吗?如果我的问题太基础,我很抱歉。

我的观点目前看起来像这样:

Guy

我的控制器是这样的:

@using (Html.BeginForm("Create", "Guys", FormMethod.Post))
{
    <input type="text" name="id" value="" />
    <input type="text" name="title" value="" />
    <input type="text" name="content" value="" />
    <input type="submit" />
}

我的模特:

static List<Guy> Guys = new List<Guy> { new Guy(1,"phd","hi1"), new Guy(2, "proff", "hi2!"), new Guy(3, "proff.asst.", "hi3") };


public ActionResult Create(Guy obj)
        {

           Guys.Add(obj);
            return RedirectToAction("Index", "Guys");
        }

1 个答案:

答案 0 :(得分:0)

在模型中定义默认构造函数可能是值得的,否则您可能会收到错误。除此之外,您的代码似乎也有效。

以下是我尝试过的代码:

public class HomeController : Controller
{
    // GET: Home
    [HttpGet]
    public ActionResult Index()
    {
        return View(Guys.First());
    }


static List<Guy> Guys = new List<Guy> { new Guy(1, "phd", "hi1"), new Guy(2,     "proff", "hi2!"), new Guy(3, "proff.asst.", "hi3") };

[HttpPost]
public ActionResult Create(Guy obj)
{

    Guys.Add(obj);
    return RedirectToAction("Index", "Guys");
}}

班级盖伊:

  public class Guy
{
    public int GuyId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }

    public Guy()
    {

    }

    public Guy(int GuyId, string Title, string Content)
    {
        this.GuyId = GuyId;
        this.Title = Title;
        this.Content = Content;
    }
}

和视图:

@model Models.Guy


@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
    <input type="text" name="GuyId" value="" />
    <input type="text" name="title" value="" />
    <input type="text" name="content" value="" />
    <input type="submit" />
}