加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – MVC – 如何将模型从视图传递到控制器

发布时间:2020-12-16 03:56:47 所属栏目:asp.Net 来源:网络整理
导读:我正在使用一个模型,需要流经一系列控制器和视图(沿着第一个控制器加载它).有没有办法将模型从视图中持久保存到控制器等等? 这是我的代码. 模型: public class ROWModel{ #region Properties //Request public ListTBLRETURNABLEITEMS TBLRETURNABLEITEMS
我正在使用一个模型,需要流经一系列控制器和视图(沿着第一个控制器加载它).有没有办法将模型从视图中持久保存到控制器等等?

这是我的代码.

模型:

public class ROWModel
{
    #region Properties
    //Request
    public List<TBLRETURNABLEITEMS> TBLRETURNABLEITEMS { get; set; }
    //public List<ReturnReasons> ReturnReasons { get; set; }

    public int Order_No { get; set; }
    public string First_Name {get; set; }
    public string Last_Name {get; set; }
    public string Company { get; set; }
    public string Address_1 { get; set; }
    public string Address_2 { get; set; }
    public string City { get; set; }
    public string State { get; set; }
    public string Postal_Code { get; set; }
    public string Email { get; set; }
    public string Phone { get; set; }
    public string CustomerCode {get; set; }
    public string TerritoryCode {get; set; }


    //Post

    #endregion

    #region Constructor
    public ROWModel()
    { }
    #endregion
}

public class ReturnableItems : IComparable<ReturnableItems>
{
    private int _id;
    private decimal _ordered;
    private decimal _shipped;

    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }

    public decimal Ordered
    {
        get { return _ordered; }
        set { _ordered = value; }
    }

    public decimal Shipped
    {
        get { return _shipped; }
        set { _shipped = value; }
    }

}

填充模型并将其发送到视图后,将使用模型显示所有内容.我认为在表单标签上坚持这样的模型:

<% using (Html.BeginForm("Items","ROW",Model))

这是ROW控制器的post Items Action:

[ActionName("Items"),AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Items(ROWModel model,FormCollection collection)

问题是Model没有返回我最初填充它的TBLRETURNABLEITEMS列表.它保留了我填充的其他属性,但不保留列表.如何维护此模型的数据,而不必在每个控制器上重新加载它.

解决方法

我认为你可以使用TempData.

所以像这样:

[AcceptVerbs(HttpVerbs.Get)]
    public ActionResult TestA()
    {
        MyModel model = new MyModel();
        model.Something = "Test";
        return View(model);
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult TestA(MyModel model)
    {
        TempData["MyModel"] = model;
        return RedirectToAction("TestB");
    }

    [AcceptVerbs(HttpVerbs.Get)]
    public ActionResult TestB()
    {
        MyModel myModel = (MyModel)TempData["MyModel"];
        return View(myModel);
    }

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读