本文介绍了ASP.NET MVC - 国家与建筑的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

一对编程会话后,一个有趣的问题上来,我想我知道答案。

问:是否有在ASP.NET MVC中任何其它所需的方式比写入数据库或文本文件,保留国家等。

我要在这里定义状态,以表示我们的人对象的集合,我们创建了一个新的,并转到另一页,并期望看到新创建人。 (所以没有阿贾克斯)

我的想法是,我们不希望任何功夫的ViewState或其他机制,这个框架是要回去无国籍网页。


解决方案

The example you provided is pretty easy to do without any sort of "view state kung fu" using capabilities that are already in MVC. "User adds a person and sees that on the next screen." Let me code up a simple PersonController that does exactly what you want:

public ActionResult Add()
{
    return View(new Person());
}

[HttpPost]
public ActionResult Add(PersonViewModel myNewPersonViewModel)
{
    //validate, user entered everything correctly
    if(!ModelState.IsValid)
        return View();

    //map model to my database/entity/domain object
    var myNewPerson = new Person()
    {
        FirstName = myNewPersonViewModel.FirstName,
        LastName = myNewPersonViewModel.LastName
    }

    // 1. maintains person state, sends the user to the next view in the chain
    // using same action
    if(MyDataLayer.Save(myNewPerson))
    {
        var persons = MyDataLayer.GetPersons();
        persons.Add(myNewPersion);

        return View("PersonGrid", persons);
    }

    //2. pass along the unique id of person to a different action or controller
    //yes, another database call, but probably not a big deal
    if(MyDataLayer.Save(myNewPerson))
        return RedirecToAction("PersonGrid", ...etc pass the int as route value);

    return View("PersonSaveError", myNewPersonViewModel);
}

Now, what I'm sensing is that you want person on yet another page after PersonSaveSuccess or something else. In that case, you probably want to use TempData[""] which is a single serving session and only saves state from one request to another or manage the traditional Session[""] yourself somehow.

What is confusing to me is you're probably going to the db to get all your persons anyway. If you save a person it should be in your persons collection in the next call to your GetPersons(). If you're not using Ajax, than what state are you trying to persist?

这篇关于ASP.NET MVC - 国家与建筑的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-05 22:19
查看更多