【问题标题】:How to post an object from the view model?如何从视图模型中发布对象?
【发布时间】:2012-04-04 23:40:54
【问题描述】:

我希望这会起作用 :( 调试时隐藏的输入似乎指向一个对象,但在帖子中没有显示任何内容。这是我尝试过的(请注意,我正在尝试简洁,所以这是一个示例)

型号

public class myViewModel
{
 public MyObject MyObject { get; set; }
 public int MyNumber { get; set; }
}

控制器

public ActionResult displaySimpleView()
{
 var mVM = new myViewModel();
 mVM.MyObject = //let MyObject be filled with 10 fields of data
 return View(mVM);
}

查看

@model namespace.myViewModel

//display the fields of data

@using (Ajax.BeginForm("Complete", ajaxOpts))//simple Ajax Options not really relevant
{
@Html.ValidationSummary(true)

@Html.HiddenFor(m => m.MyObject)
@Html.EditorFor(m => m.MyNumber)

<p><input type="submit" value="Go" /></p>
}

再次控制器

[HttpPost]
public ActionResult getMyObject(myViewModel mVM)
{
 mVM.MyObject is null here.
 mVM.MyNumber has a value.
 return RedirectToAction("someGetAction");
}

如何将 MyObject 传递给 getMyObject?我宁愿不必为每个属性都有一个隐藏字段,然后重新映射,因为其中一些属性是嵌套对象。

【问题讨论】:

  • 是否会为您的MyObject 生成任何 HTML?它可能无法表示对象,这意味着当它发布时,它没有任何数据可以传递给操作。我有几个问题,比如为什么要将数据填充到这个对象中,以及你希望做什么。您可能需要将每个值拆分为自己的属性才能使其正常工作。
  • @Tyrsius - 我找到了解决方案。为什么我要用数据填充对象?这本身就是一个有趣的问题,不是吗。我不想让我的视图知道任何关于我的数据的信息,所以我要确保我传入的数据包含在我的视图模型中的一个对象中。我正在做的是构建一系列复杂的局部视图,以使用户能够非常轻松地构建原本需要大量导航的东西。我不需要拆分每个值。请参阅我的答案以了解我的解决方案。

标签: c# asp.net-mvc-3 razor viewmodel


【解决方案1】:

查看:

@{
  TempData["passMyObject"] = Model.MyObject;
 }

控制器职位:

var myObject = TempData["passMyObject"];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多