Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 在视图Mvc3中显示模型指定的名称_Asp.net Mvc 3_Viewbag - Fatal编程技术网

Asp.net mvc 3 在视图Mvc3中显示模型指定的名称

Asp.net mvc 3 在视图Mvc3中显示模型指定的名称,asp.net-mvc-3,viewbag,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 /&

这是我的看法

@

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

这是我的控制器类

[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();
         }
    }
现在,如何在my Viewdetails.cshtml的my view中显示Danny,而不是使用

@Viewbag

您可以使用输入字段,以便在提交表单时将其值发送到
显示
操作。另外,让我们稍微清理一下您的代码,去掉
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);
    }
}
@model User
<div>Thanks for choosing the name: @Model.Name</div>
然后在
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" /> 
}

您可以使用输入字段,以便在提交表单时将其值发送到
显示
操作。另外,让我们稍微清理一下您的代码,去掉
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);
    }
}
@model User
<div>Thanks for choosing the name: @Model.Name</div>
然后在
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" /> 
}

我建议在这种情况下使用session之类的方法。它不起作用。我得到的是null值@coldtold。您是否尝试这样做:1。从
Viewdetails
中设置
ViewBag
,返回您提供的页面。2.更改ViewBag中的值。3.提交到
Display
,Display返回一个视图(您没有提供,或者这是与以前相同的视图?)。4.再次希望查看ViewBag中的值。是吗?然后你得到了你的答案,Darin正是我想说的。我建议在这种情况下使用类似session的方法。它不起作用。我得到的是null值@coldtold你想这样做吗:1。从
Viewdetails
中设置
ViewBag
,返回您提供的页面。2.更改ViewBag中的值。3.提交到
Display
,Display返回一个视图(您没有提供,或者这是与以前相同的视图?)。4.再次希望查看ViewBag中的值。是吗?然后你得到了你的答案,达林正是我想说的。什么是
View.cshtml
?我不明白你在说什么,也不明白你在努力实现什么。这不是我在回答中说明的吗?除了我使用了
Display.cshtml
而不是
View.cshtml
。如果要使用
View.cshtml
可以重命名
Display
操作,或者在返回视图时指定要呈现的视图名称作为第一个参数。我不希望它显示在文本框中,而是希望将其显示为一个标签,我使用@Html.LabelFor(m=>m.name)为其获取名称(属性名称)如果您希望将值传递给服务器,则需要一个输入字段,而不是我分配给name@Darin dimitrovi的Danny。否则它将丢失。如果不想让它可见,可以使用隐藏字段和标签。然后,在使用jQuery更新标签时,还必须更新隐藏字段的值,以便在提交表单时传递名称:
@Html.HiddenFor(x=>x.name)
。什么是
View.cshtml
?我不明白你在说什么,也不明白你在努力实现什么。这不是我在回答中说明的吗?除了我使用了
Display.cshtml
而不是
View.cshtml
。如果要使用
View.cshtml
可以重命名
Display
操作,或者在返回视图时指定要呈现的视图名称作为第一个参数。我不希望它显示在文本框中,而是希望将其显示为一个标签,我使用@Html.LabelFor(m=>m.name)为其获取名称(属性名称)如果您希望将值传递给服务器,则需要一个输入字段,而不是我分配给name@Darin dimitrovi的Danny。否则它将丢失。如果不想让它可见,可以使用隐藏字段和标签。然后,在使用jQuery更新标签时,还必须更新隐藏字段的值,以便在提交表单时传递名称:
@Html.HiddenFor(x=>x.name)