在View Mvc3中显示模型分配的名称

时间:2012-06-29 05:12:49

标签: asp.net-mvc-3 viewbag

这是我的观点

@

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 />
    }

这是模型类

公共类用户 {   private string 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

1 个答案:

答案 0 :(得分:4)

您可以使用输入字段,以便在提交表单时将其值发送到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>