标签: viewdata

ViewData和ViewBag有什么区别?

ViewBag在MVC 3中看到了.ViewData与MVC 2有什么不同?

.net viewdata viewbag asp.net-mvc-3 difference

325
推荐指数
9
解决办法
19万
查看次数

将其他ViewData传递给强类型的局部视图

我有一个强类型的局部视图,它接受一个ProductImage,当它被渲染时,我还想为它提供一些我在包含页面中动态创建的额外ViewData.如何通过RenderPartial调用将强类型对象和自定义ViewData传递给局部视图?

var index = 0;
foreach (var image in Model.Images.OrderBy(p => p.Order))
{
  Html.RenderPartial("ProductImageForm", image); // < Pass 'index' to partial
  index++;
}
Run Code Online (Sandbox Code Playgroud)

c# asp.net asp.net-mvc viewdata asp.net-mvc-partialview

169
推荐指数
6
解决办法
11万
查看次数

如何在不使用Controllers基类的情况下为所有视图设置ViewBag属性?

在过去,我通过让所有控制器继承公共基本控制器,以全局方式将常见属性(例如当前用户)粘贴到ViewData/ViewBag上.

这使得我可以在基本控制器上使用IoC,而不仅仅是为这些数据扩展到全局共享.

我想知道是否有另一种方法将这种代码插入MVC管道?

asp.net-mvc viewdata autofac asp.net-mvc-3

93
推荐指数
6
解决办法
7万
查看次数

没有类型为'IEnumerable <SelectListItem>'的ViewData项具有键'xxx'

在Stack Overflow上有一些关于这个的帖子,但没有一个答案似乎解决了我目前的情况.

我有一个页面,其中包含一个表格,每行有许多文本字段和一个下拉列表.所有下拉列表都需要使用相同的SelectList数据,所以我按如下方式设置:

调节器

ViewData["Submarkets"] = new SelectList(submarketRep.AllOrdered(), "id", "name");
Run Code Online (Sandbox Code Playgroud)

视图

<%= Html.DropDownList("submarket_0", (SelectList)ViewData["Submarkets"], "(none)") %>
Run Code Online (Sandbox Code Playgroud)

我在很多地方使用了这个设置,但由于某种原因,在这个特定的视图中,我得到了错误:

没有类型为"IEnumerable"的ViewData项具有键"submarket_0".

asp.net-mvc ienumerable viewdata selectlist drop-down-menu

84
推荐指数
4
解决办法
14万
查看次数

在RedirectToAction上保留viewdata

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult CreateUser([Bind(Exclude = "Id")] User user)
{
        ...
        db.SubmitChanges();
        ViewData["info"] = "The account has been created.";
        return RedirectToAction("Index", "Admin");
}
Run Code Online (Sandbox Code Playgroud)

这不会在redirectToAction之后的viewdata中保留"info"文本.我将如何以最优雅的方式解决这个问题?

我目前的想法是将Index controlleraction中的东西放在[NonAction]中并从Index操作和CreateUser操作中调用该方法,但我觉得必须有更好的方法.

谢谢.

asp.net-mvc viewdata redirecttoaction

38
推荐指数
2
解决办法
2万
查看次数

ViewBag与MVC中的ViewData性能差异?

我知道ViewData和ViewBag都使用相同的后备数据,并且在大多数情况下都不如使用强类型模型那样好.但是,在两者之间进行选择时,ViewBag的动态特性比使用ViewData慢吗?

asp.net-mvc performance viewdata viewbag asp.net-mvc-3

34
推荐指数
2
解决办法
2万
查看次数

哎呀!为什么System.Web.Mvc.HandleErrorInfo会传递给我的视图?

我遇到了一个相当令人沮丧的问题.我的MVC网站大部分运行正常,但随机抛出一个错误(向用户显示一个友好的错误).当我检查日志时,这就是我得到的:

System.InvalidOperationException: The model item passed into the dictionary is of type 'System.Web.Mvc.HandleErrorInfo' but this dictionary requires a model item of type 'BaseViewData'.
Run Code Online (Sandbox Code Playgroud)

片刻之后,同一个用户可以点击刷新并且页面加载正常.我被卡住了.(

更新:添加堆栈跟踪

System.Web.HttpUnhandledException: Exception of type 'System.Web.HttpUnhandledException' was thrown. ---> System.InvalidOperationException: The model item passed into the dictionary is of type 'System.Web.Mvc.HandleErrorInfo' but this dictionary requires a model item of type 'BaseViewData'.
   at System.Web.Mvc.ViewDataDictionary`1.SetModel(Object value)
   at System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary)
   at System.Web.Mvc.HtmlHelper`1..ctor(ViewContext viewContext, IViewDataContainer viewDataContainer, RouteCollection routeCollection)
   at System.Web.Mvc.ViewMasterPage`1.get_Html()
   at ASP.views_shared_site_master.__Render__control1(HtmlTextWriter __w, Control parameterContainer)
   at System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc viewdata controller views

28
推荐指数
2
解决办法
3万
查看次数

Html.HiddenFor值属性未设置

我本来可以用的

@Html.HiddenFor(x=> ViewData["crn"])
Run Code Online (Sandbox Code Playgroud)

但是,我明白了,

<input id="ViewData_crn_" name="ViewData[crn]" type="hidden" value="500" />

以某种方式绕过那个问题(id=ViewData_crn_ and name=ViewData[crn]),我尝试了以下操作,但是"value"属性没有设置.

@Html.HiddenFor(x => x.CRN, new { @value="1"})
@Html.HiddenFor(x => x.CRN, new { @Value="1"})
Run Code Online (Sandbox Code Playgroud)

生成

<input id="CRN" name="CRN" type="hidden" value="" />
<input Value="500" id="CRN" name="CRN" type="hidden" value="" />
Run Code Online (Sandbox Code Playgroud)

我做错了什么?谢谢

asp.net-mvc viewdata razor html.hiddenfor

27
推荐指数
3
解决办法
10万
查看次数

如何将ViewData传递给HandleError视图?

在我的Site.Master文件中,我有3个简单的ViewData参数(我整个解决方案中只有3个参数).这些ViewData值对于我的应用程序中的每个页面都至关重要.由于这些值在我的Site.Master中使用,我创建了一个抽象的SiteController类,它覆盖了OnActionExecuting方法,以便为我的解决方案中的每个控制器上的每个Action方法填充这些值.

[HandleError(ExceptionType=typeof(MyException), View="MyErrorView")]
public abstract class SiteController : Controller
{
  protected override void OnActionExecuting(...)
  {
    ViewData["Theme"] = "BlueTheme";
    ViewData["SiteName"] = "Company XYZ Web Portal";
    ViewData["HeaderMessage"] = "Some message...";        

    base.OnActionExecuting(filterContext);

  }
}
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是,当HandleErrorAttribute从SiteController类级别属性启动时,这些值不会传递给MyErrorView(最终是Site.Master).这是一个显示我的问题的简单方案:

public class TestingController : SiteController
{
  public ActionResult DoSomething()
  {
    throw new MyException("pwnd!");
  }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试通过覆盖SiteController中的OnException()方法来填充ViewData参数,但无济于事.:(

在这种情况下,将ViewData参数传递给Site.Master的最佳方法是什么?

asp.net-mvc viewdata handleerror

14
推荐指数
1
解决办法
7835
查看次数

在HttpContext.Current.Items和ViewData中存储数据

什么时候将数据存储到HttpContext.Current.Items[...]vs存储数据ViewData[...]

我试图弄清楚在这个集合中存储数据的最佳实践,我不确定是否可以安全地存储用户特定的数据HttpContext.Current.Items.

一个用例是从基础控制器传递用户信用OnActionExecuting(...)以用于Controller计算和显示Views; 我知道我应该使用ViewData这个,但是我对嵌套的部分视图有一些不一致的结果.

难道是正确的说,HttpContext.Current.Items[...]就是Controllers喜欢ViewData[...]就是意见

asp.net-mvc viewdata httpcontext

13
推荐指数
1
解决办法
8401
查看次数