【问题标题】:Displaying model assigned name in View Mvc3在 View Mvc3 中显示模型分配的名称
【发布时间】:2012-06-29 05:12:49
【问题描述】:

这是我的观点

@

using (Html.BeginForm("Display", "Home", @FormMethod.Post))
    {
    <div>Name:<a>@ViewBag.st</a><br /></div>
       <a></a>
    <div>City:<a>America</a></div>
    <br />
     <input type="submit" value="Submit" /> 
    <br />
    }

这是模型类

公共类用户 { 私有字符串 m_name = string.Empty;

public string Name
{
    get
    {
        return m_name;
    }
    set
    {
        m_name = value;
    }
}

}

这是我的控制器类

[HttpGet]
         public ActionResult Viewdetails()
         {
            User ur=new User();
            ur.Name = "Danny";
            ViewBag.st = ur.Name;
           return View();
         }

        [HttpPost, ActionName("Viewdetails")]
        public ActionResult Test()
        {
            return View();
        }
         [HttpPost]
         public ActionResult Display()
         {
             return View();
         }
    }

现在如何在我的 Viewdetails.cshtml 中显示 Danny 而不是使用

@Viewbag

【问题讨论】:

  • 我建议在这种情况下使用类似 session 的东西
  • 它不工作我得到空值@COLDTOLD
  • 您是否尝试这样做: 1. 将ViewBag 设置为Viewdetails,返回您提供的页面。 2. 更改 ViewBag 中的值。 3.提交到Display,Display返回一个视图(你没有提供,还是和之前一样的视图?)。 4. 你又想看到 ViewBag 的值。是这样吗?
  • 那么你得到了答案,达林有said正是我想说的。

标签: asp.net-mvc-3 viewbag


【解决方案1】:

您可以使用输入字段,以便在提交表单时将其值发送到Display 操作。另外让我们清理一下您的代码并摆脱ViewBag

所以你有一个很好的模型:

public class User
{
    public string Name { get; set; }
}

然后您可以拥有一个具有 2 个操作的控制器 - 一个填充模型并将其传递给 Viewdetails.cshtml 视图,另一个在提交表单时调用并呈现 Display.cshtml 视图的操作:

public class HomeController: Controller
{
    [HttpGet]
    public ActionResult Viewdetails()
    {
        User ur = new User();
        ur.Name = "SravanKumar";
        return View(ur);
    }

    [HttpPost]
    public ActionResult Display(User ur)
    {
        return View(ur);
    }
}

然后在您的 Viewdetails.cshtml 视图中,您将使用模型来呈现输入字段而不是链接:

@model User
@using (Html.BeginForm("Display", "Home", FormMethod.Post))
{
    <div>Name: @Html.EditorFor(x => x.Name)</div>
    <div>City: Secunderabad</div>
    <br />
    <input type="submit" value="Submit" /> 
}

在您的 Display.cshtml 视图中:

@model User
<div>Thanks for choosing the name: @Model.Name</div>

【讨论】:

  • View.cshtml 是什么?我不明白你在说什么,也不明白你想要达到什么目的。
  • 这不是我在回答中说明的吗?除了我使用Display.cshtml 而不是View.cshtml。如果您想使用View.cshtml,您可以重命名Display 操作,或者在返回视图时指定要呈现的视图名称作为第一个参数。
  • 我不希望它显示在文本框中,而是希望将其显示为我使用的标签 @Html.LabelFor(m =>m.name) 我正在获取名称(属性名称)而不是我分配给名称的 Danny @Darin Dimitrov
  • 如果您希望将值传递给服务器,您需要一个输入字段。否则会丢失。如果您不希望它可见,则可以有一个隐藏字段和一个标签。然后在使用 jQuery 更新标签时,您还必须更新隐藏字段的值,以便在提交表单时传递名称:@Html.HiddenFor(x =&gt; x.Name).
猜你喜欢
  • 1970-01-01
  • 2012-04-08
  • 1970-01-01
  • 2018-09-23
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多