HttpContext.Current.Items[...]vs存储数据ViewData[...]?我试图弄清楚在这个集合中存储数据的最佳实践,我不确定是否可以安全地存储用户特定的数据HttpContext.Current.Items.
一个用例是从基础控制器传递用户信用OnActionExecuting(...)以用于Controller计算和显示Views; 我知道我应该使用ViewData这个,但是我对嵌套的部分视图有一些不一致的结果.
难道是正确的说,HttpContext.Current.Items[...]就是Controllers喜欢ViewData[...]就是意见?
在asp.net mvc中保存查询字符串值的好方法是什么?
如果我有一个网址:/ questions?page = 2&sort = newest&items = 50&showcomments = 1&search = abcd
在分页链接上,我想在所有链接中保留这些查询字符串值,以便在用户点击"下一页"时保持这些值(在这种情况下,页面值会改变,但其余部分将保持不变)
我可以想到两种方法:
这个比那个好吗?这些是唯一的选择还是有更好的方法来做到这一点?
假设您想开发控制器以便使用ViewModel来包含您呈现的视图的数据,那么是否所有数据都包含在ViewModel中?什么条件可以绕过ViewModel?
我问的原因是我处在一些代码使用ViewData而一些代码正在使用ViewModel的位置.我想在团队中分发一套关于何时正确使用ViewData的指南,以及何时只是采用快捷方式.我希望得到其他开发人员的意见,以便我知道我的指导方针不仅仅是我的偏见.
我在我的视图中使用以下内容来检查是否存在类似domain.com/?query=moo的查询
if (!string.IsNullOrEmpty(Request.QueryString["query"])) { my code }
但现在需要更改它,以便检查ViewData查询是否存在而不是查询字符串,但不太确定如何重写它.我的ViewData看起来像这样:ViewData["query"]
有人可以帮忙吗?谢谢
我一直在阅读Scott Guthrie关于将ViewData从控制器传递到视图的帖子,但我不认为该课程是针对我的具体情况点击的.
(注意:由于客户端的专有限制,我不能说贴实际代码,所以如果我的编写案例有点愚蠢/混乱,我道歉.)
我有一个名为ScenarioController的Controller,它处理围绕创建Scenario模型的各种操作.用户将完成的各种操作是方案的一般CRUD.我可以创建一个为Scenario模型执行此操作的网站.但是,我最近更新了Scenario模型,现在它由各种子组件(其他对象列表)组成.相应的视图使用jQuery选项卡,它加载部分视图,最终将表单加载到各种子组件数据.不幸的是,这是我遇到麻烦的地方.
我的索引页面目前看起来像这样:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<% using (Html.BeginForm()) {%>
<div id="scenario">
<div id="tabs">
<ul>
<li><a href="#tab1">Tab 1</a></li>
<li><a href="#tab2">Tab 2</a></li>
<li><a href="#tab3">Tab 3</a></li>
</ul>
<div id="tab1"><% Html.RenderPartial("Tab1"); %></div>
<div id="tab2"><% Html.RenderPartial("Tab2"); %></div>
<div id="tab3"><% Html.RenderPartial("Tab3"); %></div>
</div>
<div class="submitButtons">
<input type="button" value="Save Scenario" id="SaveScenario" />
<input type="button" value="Submit Scenario" id="SubmitScenario" />
</div>
</div>
<% } %>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
并且部分页面强烈地键入它们所代表的任何内容(主要是List<SomeObject>).
如何在Scenario模型中存储数据?我正在使用SQL数据库并与Entity Framework连接.我是否仍然需要表示各种项目列表的属性(因此我可以使用强类型类传递ViewData),或者这是我可以直接从实体调用传入ViewData(并根据需要进行转换)?
嗨,我是MVC新手,我已经四处乱窜,如何构建将ViewData返回给他们的MVC用户控件.我希望有人会就如何解决这个问题提出一步一步的解决方案.如果你能使你的解决方案非常详细,那将会有很大帮助.
很抱歉因为我的问题如此离散,我想澄清我最终尝试做的是将id传递给控制器actionresult方法,并希望直接从控制器本身将其呈现给用户控件.我不确定如何开始这种方法,并想知道这是否可能.它基本上在我的脑海中看起来像这样
public ActionResult RTest(int id){
RTestDataContext db = new RTestDataContext();
var table = db.GetTable<tRTest>();
var record = table.SingleOrDefault(m=> m.id = id);
return View("RTest", record);
}
Run Code Online (Sandbox Code Playgroud)
在我的用户控件中,我想渲染该记录的对象,这就是我的问题.
我试图找出如何在asp.net mvc中使用usercontrols.我知道如何将一个usercontrol添加到视图以及如何将数据传递给它.我无法弄清楚的是,如何在不必检索和传递每个控制器中的数据的情况下执行此操作?
例如,如果我有一个用户控件在站点中的几个但不是所有页面上显示最新的帖子,我该如何编写控制器以便我获取该用户控件的数据并将其从一个用户控件传递给用户控件放置在网站中而不是在使用用户控件的每个不同控制器中获取和传递数据?
我不确定这是否有意义.是否有更好或推荐的方法来处理要在多个页面上显示的"孤岛"数据?
我来自Web表单,在那里我可以编写一个用户控件,它可以独立于其使用的任何页面,从而获得自己的数据和显示数据.
我在这里苦苦挣扎,找到一种简单的方法将数组从控制器传递到ASP.NET MVC框架上的视图.
所以在我的控制器中我会有类似的东西:
public class HomeController : ApplicationController
{
public ActionResult Index()
{
string[] myArray = { "value01", "value02", "value03"};
ViewData["passedArray"] = myArray;
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
所以在我看来,我只需要调用ViewData ["passedArray"]并在其上运行循环.
但显然ViewData正在接收ViewData作为System.String,可能是因为Array DataType上的声明,但不幸的是我不知道如何正确地传递它,而不是创建数百万个代码行.
如果一个人可以帮助我,那将是太棒了.
提前致谢
嗨,有没有人知道如何通过"ViewData"传递列表.这就是我正在尝试但我认为我错过了一些演员.
List<GalleryModel> galleryList = new List<GalleryModel>();
galleryList.Add(new GalleryModel() { isApproved = true, uri = "www.cnn1.com" });
galleryList.Add(new GalleryModel() { isApproved = true, uri = "www.cnn2.com" });
ViewData["SomeList"] = galleryList;
Run Code Online (Sandbox Code Playgroud)
这是我的aspx页面代码:
<% List<myNS.CM.AVDTalentApplication.Models.GalleryModel> galList = ViewData["SomeList"]; %>
<% foreach (var gal in galList) { %>
<%= gal.uri%>
<%} %>
Run Code Online (Sandbox Code Playgroud) 我在我的控制器中有一个viewdata,它由一个列表填充:
List<employee> tempEmpList = new List<employee>();
tempEmpList = context.employees.ToList();
ViewData["tempEmpList"] = tempEmpList;
Run Code Online (Sandbox Code Playgroud)
我将此传递到我的视图中,问题是,如何将viewdata列表的内容放入下拉列表?
显示数据将.name来自列表项.
我知道我可以foreach在Viewdata上创建一个选择列表,但这看起来有点长
viewdata ×10
asp.net-mvc ×9
asp.net ×2
.net ×1
arrays ×1
controller ×1
httpcontext ×1
list ×1
query-string ×1
razor ×1
viewmodel ×1