【问题标题】:.Net Using a view bag variable in a method.Net 在方法中使用视图包变量
【发布时间】:2015-11-12 20:33:11
【问题描述】:

我正在尝试在两个视图(编辑和创建)之间重用部分视图表单。

在父视图中,我声明了一个名为表单类型的变量,我基本上只想在我的局部视图中使用该值,但它似乎不起作用。这是我目前所拥有的:

父视图

@model Models.Slide
@{
    ViewBag.Title = "Edit Slide";
    ViewBag.FormType = "Edit";
    Layout = "~/Areas/Admin/Views/Slide/_SlideLayout.cshtml";
}

<h2>Edit Slide</h2>

@Html.Partial("_SlideForm", Model)

部分视图 (_SlideForm)

@model Models.Slide

 @using (Html.BeginForm(ViewBag.Title, "Slide", null, FormMethod.Post, new  { enctype = "multipart/form-data" }))
{

我基本上只是想在局部视图之外声明一些可以用于局部视图中的操作方法的东西。

任何帮助将不胜感激。

谢谢

【问题讨论】:

  • 我基本上只是想在局部视图之外声明一些可以用于局部视图中的操作方法的内容。 使用Child Action 来执行此操作。我为此answer做了一个例子。
  • 我不明白为什么你不只是在父视图中声明@using (Html.BeginForm()) 而只是使用局部视图来显示字段
  • @JamieD77,同意。那将是更好的方法。
  • 我认为更简洁的方法是对创建和编辑表单帖子使用相同的 HttpPost 操作方法。 ViewBags 是动态的,我会尽可能少地使用它们。

标签: c# .net asp.net-mvc forms model-view-controller


【解决方案1】:

你所拥有的应该可以工作。问题是当你像这样传入参数时,类型需要匹配。 ViewBag 之外的任何内容都是动态的,因此您必须转换为正确的类型。另外,我想你在这里有点傻,打算使用ViewBag.FormType而不是ViewBag.TitleViewBag.Title 不是有效的操作名称,因此无论如何都会失败。

@using (Html.BeginForm((string)ViewBag.FormType, ...

【讨论】:

    猜你喜欢
    • 2021-02-25
    • 1970-01-01
    • 2021-06-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-27
    相关资源
    最近更新 更多