我ViewBag在MVC 3中看到了.ViewData与MVC 2有什么不同?
我正在阅读一本关于ASP.NET MVC的书,我想知道以下示例是如何工作的:
public class MyController : Controller
{
public ActionResult Index()
{
ViewBag.MyProperty = 5;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
<h1>@ViewBag.MyProperty</h1>
Run Code Online (Sandbox Code Playgroud)
现在我明白了ViewBag是一个动态的对象,所以这是如何设置的属性(虽然我不知道很多关于动态对象,从来没有与他们合作.)但如何看法得到的特定实例ViewBag从控制器,即使我们没有直接传递任何东西?
我认为它ViewBag可能是一个public static对象,但是对它的任何改变都是全局的,它不会特定于视图实例.
你能详细说明这是如何在幕后工作的吗?
public class MyController : Controller
{
public ActionResult Index()
{
ViewBag.MyProperty = 5;
return View();
}
public ActionResult Index2()
{
ViewBag.MyProperty = 6;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
现在让我们说Index首先调用该方法,然后调用Index2.最后,值ViewBag.MyProperty将最终为6(来自的值Index2).我觉得这不是一件好事,但与此同时我觉得我在思考桌面开发术语.也许与ASP.NET MVC一起使用无关紧要,因为Web是无状态的.是这样的吗?
我有一个调用视图的控制器.有没有办法可以只传递一个整数到我的视图,能够在我的视图中使用剃刀代码的整数?
这是我的控制器中的方法:
public ActionResult Details(int linkableId)
{
return View(linkableId);
}
Run Code Online (Sandbox Code Playgroud)
返回我的视图后,我可以使用像这样的razor代码来访问这个int:
@linkableId
Run Code Online (Sandbox Code Playgroud) 我是ASP.NET MVC4的新手.我正在阅读本教程http://www.asp.net/mvc/tutorials/mvc-4/getting-started-with-aspnet-mvc4/adding-a-view.我不清楚返回View()方法.要将数据从视图发送到控制器,我已使用此代码
public ActionResult Index()
{
return View();
}
Run Code Online (Sandbox Code Playgroud)
这里返回View()方法将数据从视图返回到控制器.要从控制器发送数据到视图,我已经使用了这段代码
public ActionResult Welcome(string name, int numTimes = 1)
{
ViewBag.Message = "Hello " + name;
ViewBag.NumTimes = numTimes;
return View();
}
Run Code Online (Sandbox Code Playgroud)
这是我的困惑点.返回View()方法是否将ViewBag.Message和ViewBag.NumTimes返回到Welcome视图.或欢迎视图的值返回到欢迎方法?
请帮我清除这一部分.
叫我疯了,但我正在用F#开发一个ASP.NET MVC4站点.这是我的第一个障碍; 在控制器中我提交字典,这样:
[<HandleError>]
type FooController() =
inherit Controller()
member this.Index () =
this.ViewData.Add("Foo", "Bar")
this.ViewData.Add("Baz", dict [ (0, 0); (1, 3); (2, 2); ] )
this.View() :> ActionResult
Run Code Online (Sandbox Code Playgroud)
现在我想迭代Razor模板中的值,该怎么做?我试过这个:
@foreach (var time in @ViewBag.Baz.Keys)
{
<hr /><p>Time is @time, and value is @ViewBag.Baz[time]</p>
}
Run Code Online (Sandbox Code Playgroud)
但它抛出了这个错误:
Line 119: Total: <span class="highlight">6449</span> kW/h.
Line 120: </p>
Line 121: @foreach (var time in (@ViewBag.Baz).Keys)
Line 122: {
Line 123: <hr /><p>Time is @time, and value is @ViewBag.Baz[time]</p>
[RuntimeBinderException: 'object' does not contain …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×4
c# ×3
viewbag ×2
.net ×1
asp.net ×1
difference ×1
dynamic ×1
f# ×1
razor ×1
viewdata ×1