Questions tagged «asp.net-mvc»

ASP.NET MVC框架是一个开源Web应用程序框架和工具,可实现针对Web应用程序量身定制并基于ASP.NET技术基础的模型-视图-控制器(MVC)模式版本。

5
授权具有多个角色的属性
我想一次为多个角色的控制器添加授权。 通常情况如下: [Authorize(Roles = "RoleA,RoleB,RoleC")] public async Task<ActionResult> Index() { } 但是我将我的角色存储在const中,因为它们有时可能会更改或扩展。 public const RoleA = "RoleA"; public const RoleB = "RoleB"; public const RoleC = "RoleC"; 我不能这样做,因为必须在编译时知道该字符串: [Authorize(Roles = string.join(",",RoleA,RoleB,RoleC)] public async Task<ActionResult> Index() { } 有办法解决这个问题吗? 我可以编写一个仅包含“ RoleA,RoleB,RoleC”的const-但我不喜欢魔术字符串,这是一个魔术字符串。更改角色名称而忘记更改组合字符串将是一场灾难。 我正在使用MVC5。在编译时就知道ASP.NET身份和角色。

13
Html.DropdownList对于未设置所选值
如何设置Html.DropDownListFor的选定值?我一直在网上看,已经看到可以通过使用第四个参数来实现它,如下所示: @Html.DropDownListFor(m => m, new SelectList(Model, "Code", "Name", 0), "Please select a country") 然后,我的选择列表显示如下: <select id="ShipFromCountries" name="ShipFromCountries"> <option value="">Please select a country</option> <option value="GB">United Kingdom</option> <option value="US">United States</option> ... </select> 但是由于某些原因,英国仍然被选中,但我希望选择“请选择一个国家”。 有人知道我能做到这一点吗? 编辑 我已经更新了代码,因为功能略有变化,但是似乎仍然遇到此问题。我认为这是什么: @Html.DropDownListFor(n => n.OrderTemplates, new SelectList(Model.OrderTemplates, "OrderTemplateId", "OrderTemplateName", 1), "Please select an order template") 1是option我要选择的ID ,我也尝试过使用的文本,option但这也不起作用。 有任何想法吗?


12
我的项目中多个同名控制器出现问题
我的ASP.NET MVC 3项目遇到以下错误: 找到了多个与名为“ Home”的控制器匹配的类型。如果为该请求提供服务的路由(“ Home / {action} / {id}”)未指定名称空间来搜索与该请求匹配的控制器,则会发生这种情况。如果是这种情况,请通过调用带有“名称空间”参数的“ MapRoute”方法的重载来注册此路由。 对“家”的请求已找到以下匹配的控制器:MyCompany.MyProject.WebMvc.Controllers.HomeController MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController 我的默认控制器文件夹中有一个HomeController,其类名为MyCompany.MyProject.WebMvc.Controllers.HomeController。 我的global.asax中的RegisterRoutes方法如下所示: public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // Route name "{controller}/{action}/{id}", // URL with parameters new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults ); } 然后,我有一个名为Company的区域,该区域的默认控制器文件夹中有一个HomeController,其类名为MyCompany.MyProject.WebMvc.Areas.Company.Controllers.HomeController。 …

8
ASP.NET MVC-TempData-好的或坏的做法
我正在使用AcceptVerbsScott Gu的Preview 5博客文章中详细介绍的方法来处理ASP.NET MVC中的表单项: 用户通过GET获取一个空表格 用户通过POST将填写的表单过帐到同一操作 该操作将验证数据,采取适当的操作并重定向到新视图 因此,我不必使用TempData。也就是说,我现在必须在此过程中添加一个“确认”步骤,并且似乎需要使用TempData。 出于某种原因,我不愿意使用TempData它,这是需要设计的东西。 这完全是一个有效的问题,还是我要弥补?

2
如何将BundleConfig.cs添加到我的项目中?
我有一个ASP.Net MVC项目,我想实现捆绑,但一切我可以在互联网上找到指引我开BundleConfig.cs的App_Start-但是这个文件不在我的项目存在。我只有三个文件夹中的文件:FilterConfig,RouteConfig和WebApiConfig。 创建解决方案时未生成捆绑配置(IIRC在开始时是一个空白的ASP.NET MVC项目)。 看来这确实很容易做到,但我只是无法理解。 PS只是为了向那些不熟悉的人澄清,这是针对从头创建的MVC4 / .Net 4.5应用程序。解决方案在下面标记。

6
在ASP.NET MVC应用程序中,将视图特定的javascript文件放在哪里?
将特定于视图的javascript文件放在ASP.NET MVC应用程序中的最佳位置(哪个文件夹等)是什么? 为了使我的项目井井有条,我真的很想能够将它们与视图的.aspx文件并排放置,但是在没有暴露〜/ Views的情况下,我没有找到一种引用它们的好方法/ Action /文件夹结构。让该文件夹结构的详细信息泄漏真的是一件坏事吗? 另一种方法是将它们放在〜/ Scripts或〜/ Content文件夹中,但有一点麻烦,因为现在我不得不担心文件名冲突。但是,如果这是“正确的事情”,我可以克服。

4
如何在ASP.NET MVC中重定向到动态登录URL
我正在创建一个多租户网站,为客户托管页面。URL的第一段将是标识客户端的字符串,该字符串使用以下URL路由方案在Global.asax中定义: "{client}/{controller}/{action}/{id}" 使用/ foo / Home / Index之类的URL可以正常工作。 但是,当使用[Authorize]属性时,我想重定向到也使用相同映射方案的登录页面。因此,如果客户端是foo,则登录页面将是/ foo / Account / Login,而不是web.config中定义的固定的/ Account / Login重定向。 MVC使用HttpUnauthorizedResult返回401未经授权状态,我认为这会使ASP.NET重定向到web.config中定义的页面。 那么,有谁知道如何重写ASP.NET登录重定向行为?还是通过创建自定义授权属性在MVC中进行重定向会更好? 编辑-答案:在深入研究.Net源代码之后,我认为自定义身份验证属性是最佳解决方案: public class ClientAuthorizeAttribute: AuthorizeAttribute { public override void OnAuthorization( AuthorizationContext filterContext ) { base.OnAuthorization( filterContext ); if (filterContext.Cancel && filterContext.Result is HttpUnauthorizedResult ) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary …

6
如何清除有关glyphicons-halflings-regular.woff2的错误
ASP.NET MVC4 Bootstrap 3应用程序正在从Microsoft Visual Studio Express 2013 for Web IDE运行。 Chrome控制台始终显示错误 http://localhost:52216/admin/fonts/glyphicons-halflings-regular.woff2 Failed to load resource: the server responded with a status of 404 (Not Found) 该文件位于解决方案资源管理器的fonts目录中。构建操作设置为“内容”,复制到输出目录为“请勿像在其他字体文件中一样进行复制”。使用NuGet将Bootstrap 3添加到解决方案中。如何解决此问题,以免发生此错误?应用程序正确显示Glyphicon和FontAwesome图标。该错误总是在应用程序启动时发生。

4
带有Razor的Html.RenderPartial()语法
之所以有效,是因为它以字符串形式返回部分视图渲染的结果: @Html.Partial("Path/to/my/partial/view") 但是我更喜欢使用RenderPartial,似乎我需要写: @{Html.RenderPartial("Path/to/my/partial/view");} 代替: @Html.RenderPartial("Path/to/my/partial/view"); 要使其正常工作。错误信息: Compiler Error Message: CS1502: The best overloaded method match for 'System.Web.WebPages.WebPageExecutingBase.Write(System.Web.WebPages.HelperResult)' has some invalid arguments 如果有更好的方法代替@{...}只为一个方法调用打开代码块?

7
ASP.NET MVC中是否存在视图?
在渲染视图之前,是否可以从控制器中确定是否存在特定的视图名称? 我需要动态确定要渲染的视图的名称。如果存在具有该名称的视图,那么我需要渲染该视图。如果没有按自定义名称显示的视图,则需要渲染默认视图。 我想在控制器中执行类似于以下代码的操作: public ActionResult Index() { var name = SomeMethodToGetViewName(); // The 'ViewExists' method is what I've been unable to find. if (ViewExists(name)) { retun View(name); } else { return View(); } }


21
无法从程序集中加载BuildTasks.Csc任务?
我在这里问这样的问题感到内,但我很茫然,不胜感激。 诸如Web应用程序之类的概念验证建在一台PC上,并放在存储库中以在另一位置的另一台PC上下载。最初设置了自动构建功能,Azure将在签入时自动构建和发布功能,但是该功能已删除。事情一直在两端进行,直到一侧包含大量排除的更改。现在,我看到以下错误: 无法 从程序集... \ packages \ Microsoft.Net.Compilers.1.0.0 \ build .. \ tools \ Microsoft.Build.Tasks.CodeAnalysis.dll中加载“ Microsoft.CodeAnalysis.BuildTasks.Csc”任务。无法加载文件或程序集“ file:/// ... \ packages \ Microsoft.Net.Compilers.1.0.0 \ tools \ Microsoft.Build.Tasks.CodeAnalysis.dll”或其依赖项之一。该系统找不到指定的文件。确认声明正确,程序集及其所有依赖项均可用,并且任务包含实现Microsoft.Build.Framework.ITask的公共类。 有人对从哪里开始寻找问题有任何建议吗?

6
ASP.NET MVC剃刀串联
我正在尝试使用Razor视图引擎呈现如下所示的HTML列表: <ul> <li id="item_1">Item 1</li> <li id="item_2">Item 2</li> </ul> 我试图用来呈现此列表的代码是: <ul> @foreach (var item in Model.TheItems) { <li id="item_@item.TheItemId">Item @item.TheItemId</li> } </ul> 解析器令人窒息,因为它认为id属性中下划线右侧的所有内容均为纯文本,因此不应进行解析。我不确定如何指示解析器呈现TheItemId。 我只想在模型对象上添加一个包含item_前缀的属性。 我还必须保留这种语法,因为我将列表与JQuery Sortable配合使用,并且将序列化功能与要求id属性以这种语法格式设置的序列化功能一起使用。

12
如何在ASP.NET MVC中展平通过JsonResult返回的ExpandoObject?
我非常喜欢在运行ExpandoObject时编译服务器端动态对象的过程,但是在JSON序列化过程中很难解决这个问题。首先,我实例化该对象: dynamic expando = new ExpandoObject(); var d = expando as IDictionary<string, object>; expando.Add("SomeProp", SomeValueOrClass); 到目前为止,一切都很好。在我的MVC控制器中,我想将其作为JsonResult发送下来,所以我这样做: return new JsonResult(expando); 这会将JSON序列化为以下内容,供浏览器使用: [{"Key":"SomeProp", "Value": SomeValueOrClass}] 但是,我真正想要看到的是: {SomeProp: SomeValueOrClass} 我知道,如果我使用dynamic而不是ExpandoObject- JsonResult能够将dynamic属性和值序列化为单个对象(没有键或值业务),则可以实现此目的,但是我需要使用的原因ExpandoObject是因为我不知道所有据我所知,直到运行时对象上需要的属性,据我所知,如果dynamic不使用,就无法向a动态添加属性ExpandoObject。 我可能需要在javascript中筛选“键”,“值”业务,但是我希望在将其发送给客户端之前先弄清楚这一点。谢谢你的帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.