标签: viewdata

Asp.net MVC用户控件ViewData

当控制器基于模型呈现视图时,您可以使用索引器从ViewData集合中获取属性(即ViewData ["Property"]).但是,我有一个共享用户控件,我尝试使用以下方法调用:

return View("Message", new { DisplayMessage = "This is a test" });
Run Code Online (Sandbox Code Playgroud)

在我的消息控件上我有这个:

<%= ViewData["DisplayMessage"] %>
Run Code Online (Sandbox Code Playgroud)

我认为这会正确渲染DisplayMessage,但是返回null.经过大量的修补,我终于创建了一个"MessageData"类,以便强烈键入我的用户控件:

public class MessageControl : ViewUserControl<MessageData>
Run Code Online (Sandbox Code Playgroud)

现在这个电话有效:

return View("Message", new MessageData() { DisplayMessage = "This is a test" });
Run Code Online (Sandbox Code Playgroud)

并可以这样显示:

<%= ViewData.Model.DisplayMessage %>
Run Code Online (Sandbox Code Playgroud)

为什么在没有强大地键入用户控件的情况下,不会将DisplayMessage属性添加到ViewData(即ViewData ["DisplayMessage"])集合中?这是设计的吗?ViewData是否包含"DisplayMessage"的键是否有意义?

asp.net asp.net-mvc viewusercontrol viewdata

6
推荐指数
1
解决办法
5211
查看次数

我应该在哪里放置我的asp.net-mvc强类型viewdata?

我一直在我的控制器中嵌入我的viewdata类,随着数字的增长,我开始问自己这是不是一个好主意.然后,关于使用这些东西污染/ Views和/ Controllers目录的东西似乎已经关闭了.

我在这里缺少一个约定吗?也许一个/ ViewData目录?idk,我的viewdata类有哪些好的位置?

asp.net-mvc viewdata conventions

6
推荐指数
1
解决办法
421
查看次数

ASP.NET MVC模型与ViewData对于选择列表

我有一个ASP.NET MVC应用程序,有很多下拉列表和多选列表.基本上,很多选项列表.

我的问题是; 将这些列表作为模型的一部分或ViewData传递给视图会更好吗?

我目前正在将它们作为ViewData传递,因为我在模型上并不真正需要它们,并且它们似乎可能在模型上传递时很笨重(我得到所选项目或项目,这实际上是我所需要的).在缺点方面,ViewData需要在View上进行转换,这不如强类型模型好.

这里有最好的做法吗?即使是对这些方面的利弊建议也会受到赞赏.

asp.net-mvc viewdata model selectlist multi-select

6
推荐指数
1
解决办法
3093
查看次数

Asp.net-MVC中Session和ViewData有什么区别?

我什么时候应该使用一个?我想在启动时缓存某个对象并在应用程序周围重用.这听起来像是更好的解决方案(ViewData或Session)?

asp.net-mvc session viewdata

6
推荐指数
1
解决办法
4271
查看次数

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

我在处理控制器的Post请求时遇到问题:

[HttpGet]
public ActionResult Crear()
{
    CarreraRepository carreraRepository = new CarreraRepository();
    var carreras = carreraRepository.FindAll().OrderBy(x => x.Nombre);
    var carrerasList = new SelectList(carreras, "ID", "Nombre");
    ViewData["Carreras"] = carrerasList;

    Materia materia = new Materia();
    return View(materia);        
}

[HttpPost]
public ActionResult Crear(Materia materia, FormCollection values)
{
    if (ModelState.IsValid)
    {
        repo.Add(materia);
        repo.Save();

        return RedirectToAction("Index");
    }
    return View(materia);
}
Run Code Online (Sandbox Code Playgroud)

当HttpGet操作运行时,要创建的表单呈现正常.DropDownList上的值设置正确,一切都很好; 当我尝试提交表单(运行HttpPost操作)时,我收到错误.

谁能帮我吗?

是因为HttpPost没有声明ViewData吗?谢谢您的帮助.

c# viewdata asp.net-mvc-2 drop-down-menu

5
推荐指数
1
解决办法
1万
查看次数

ASP.NET MVC 3 RC - Razor"查看"属性

刚刚在今天发布的ASP.NET MVC 3 RC中使用Razor.

现在,我们有一个"布局页面"的概念,我认为它取代了ASPX视图引擎中的"View Master".

但我不明白布局页面的"视图"属性.

以下是创建新Razor View时创建的示例:

_Layout.cshtml

<html>
<head>
   <title>@View.Title</title>
Run Code Online (Sandbox Code Playgroud)

...

MyView.cshtml

@model Mvc3FunParty.Models.Post

@{
   View.Title = "Some Title";
   Layout = "~/Views/Shared/_Layout.cshtml";
}
Run Code Online (Sandbox Code Playgroud)

这导致"Some Title"被插入到<title>呈现的HTML 的标记中.

这究竟是如何工作的?当我将鼠标悬停在"视图"属性上时,它的类型为" 动态 ".

那么这个属性应该用于什么呢?我们可以在那里塞东西吗?这应该是ViewData的Razor实现吗?

如果是这样,它不应该是" ViewDataDictionary " 类型?为什么View属性的" 动态 "类型?

c# viewdata razor asp.net-mvc-3

5
推荐指数
1
解决办法
6673
查看次数

为什么= ViewData [""]会显示一个字符串但是对同一个字符串进行评估会失败?

//CHECK IF WE SHOULD SHOW THE PASSWORD HINT OR NOT
Setting passwordhints;

using (var db = new dbDataContext())
{
    passwordhints = (from c in db.Settings
            where c.Name == "ShowPasswordHints" && c.ID == _ID
            select c).FirstOrDefault();
}

if (passwordhints != null)
    //NOTE: .Value IS A STRING
    ViewData["ShowPasswordHints"] = passwordhints.Value;
else
    ViewData["ShowPasswordHints"] = "False";

//END PASSWORD HINTS CHECK
Run Code Online (Sandbox Code Playgroud)

是在控制器中,当我到达页面本身时我输出

<%=ViewData["ShowPasswordHints"]%> 进入标题标签,我可以在那里看到它说"真"(没有引号,我还用括号括起来检查空格,没有空格,它实际上只是真)

但是,当我这样做

<%if(ViewData["ShowPasswordHints"] == "True") {%> SHOW THIS <%}%>
Run Code Online (Sandbox Code Playgroud)

显示这从未出现过,到底是什么?

更新:但是,如果ViewData设置如此......它工作......嗯?

if (accountRepository.isLDAPEnabled(_ID))
                ViewData["LDAP"] = "True";
            else
                ViewData["LDAP"] = "False";
Run Code Online (Sandbox Code Playgroud)

视图... …

c# asp.net-mvc viewdata

5
推荐指数
1
解决办法
3800
查看次数

当前上下文中不存在名称“ViewData”

我正在通过 MVC3 处理我的第一个应用程序,但它仍然是一个新手:
我正在尝试在母版页上成功我的 ViewData[] 因为它包含将在每个页面上使用的消息,但是当我试图访问它说:

CS0103:当前上下文中不存在名称“ViewData”

var msg = ViewData["msg"] as string;
        //var msg = ViewBag.msg as string;
        if (msg != null)
        {
            Response.Write (msg);
        } else if (msg == null)
        {
            Response.Write("");
        }
Run Code Online (Sandbox Code Playgroud)

我不确定是我做错了什么,还是无法通过我的 MasterPage 访问 ViewData[]。请帮忙!

.net viewdata master-pages viewbag asp.net-mvc-3

5
推荐指数
1
解决办法
1万
查看次数

在使用asp.net剃刀标记的textarea中添加新行

如何在Razor @foreach语句内的文本区域中的每个项目之后添加换行符?

下面的代码在一行上显示所有内容,例如...

12341524345634567654354487546765

当我想要...

12341524

34563456

76543544

87546765

<textarea>
    @foreach (var item in ViewData.Model)
    {
                @item["ACCT_ID"]
    }
</textarea>
Run Code Online (Sandbox Code Playgroud)

foreach viewdata textarea newline razor

5
推荐指数
1
解决办法
4005
查看次数

在JavaScript中访问ASP.NET Core ViewData

我通过ViewData从控制器发送文件路径(字符串)到html页面,我想在我的javascript中访问该字符串,使用它,在javascript中运行一些算法,然后使用结果来使用它们并在同一个html页面上制作一些图形.

HTML

</head>
<body>
    <div id="mychart"></div>
    <script>
        var path=@ViewData["path"];
        //some javascript logic with the string path of the file.
        //using results for output chart of id 'mychart'
    </script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

控制器动作代码:

        public IActionResult CellResult(string outputpath)
        {
            ViewData["path"] = outputPath;
            return View();
        }
Run Code Online (Sandbox Code Playgroud)

html javascript asp.net viewdata

5
推荐指数
1
解决办法
3707
查看次数