【问题标题】:set my model with viewbag value用 viewbag 值设置我的模型
【发布时间】:2014-01-29 20:05:15
【问题描述】:

在一个表单中,我填充了我的输出模型(将由控制器处理)。 一个值不是用户输入,它实际上是我用 Viewbag 注入的上一页到此页面的对象。 现在我想将此对象设置为我的模型属性之一(复杂对象),我正在寻找一种方法来做到这一点。 我遇到了

  @Html.HiddenFor(m =>

但我似乎无法理解如何在那里设置我的财产

【问题讨论】:

  • 您将如何以当前形式使用它
  • 好吧,我实际上只是展示了这个对象的一些字段,但我需要向前推进,但这次是作为页面输出模型的成员

标签: asp.net-mvc view model asp.net-mvc-5


【解决方案1】:

据我了解,不使用模型就不能使用HiddenFor

你可以试试,

@Html.Hidden("FieldId", ViewBag.FieldId)

像这样在控制器中访问它

public ActionResult Action(string FieldId)
{
    //Do something
}

【讨论】:

  • 谢谢,但我已经有模型被填充到表单中并交给操作。我需要对象只是属性之一。
  • @user1025852,纠正我,在模型的一个属性中传递给视图。这很容易
【解决方案2】:

如果该属性在 ViewBag 对象中可用,那么您可以这样做。

public ActionResult Index()
{
    var viewModel = new YourViewModelClass();

    viewModel.Property = ViewBag.Property;

    return View(viewModel);
}

[HttpPost]
public ActionResult Index(YourViewModel viewModel)
{
    // viewModel.Property will contain the hidden input value.
}

查看

@Html.HiddenFor(m => m.Property);

这样,当ViewBag 的值被发送回服务器时,您可以将其保留在视图模型中。

【讨论】:

  • YouViewModelClass 是什么?是 Myview.cshtml 吗?
  • 这是一个虚构的类名。您提到您有一个模型,只需使用您的模型而不是 YourViewModel
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-11
  • 1970-01-01
  • 2020-03-11
  • 2012-04-05
  • 1970-01-01
相关资源
最近更新 更多