Questions tagged «asp.net-mvc»

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

5
ASP.NET MVC 3-重定向到另一个操作
我想将Home控制器的Index操作重定向到另一个控制器的操作,仅此而已。因此,我的代码是: public void Index() { //All we want to do is redirect to the class selection page RedirectToAction("SelectClasses", "Registration"); } 现在,这只会加载一个0 kB的空白页面,什么也不做。我感觉它与该void返回类型有关,但是我不知道将其更改为什么。这是什么问题?

5
MVC:如何将字符串返回为JSON
为了使进度报告过程更加可靠,并将其与请求/响应分离,我正在Windows Service中执行处理,并将预期的响应持久化到文件中。当客户端开始轮询更新时,其目的是控制器以JSON字符串形式返回文件的内容(无论它们是什么)。 该文件的内容已预序列化为JSON。这是为了确保在响应过程中没有任何障碍。无需进行任何处理(只需将文件内容读入字符串并返回)即可获得响应。 我最初虽然很简单,但事实并非如此。 当前,我的控制器方法看起来是这样的: 控制者 更新 [HttpPost] public JsonResult UpdateBatchSearchMembers() { string path = Properties.Settings.Default.ResponsePath; string returntext; if (!System.IO.File.Exists(path)) returntext = Properties.Settings.Default.EmptyBatchSearchUpdate; else returntext = System.IO.File.ReadAllText(path); return this.Json(returntext); } Fiddler将此作为原始响应返回 HTTP/1.1 200 OK Server: ASP.NET Development Server/10.0.0.0 Date: Mon, 19 Mar 2012 20:30:05 GMT X-AspNet-Version: 4.0.30319 X-AspNetMvc-Version: 3.0 Cache-Control: …
70 asp.net-mvc  json 

10
发送HTTP标头到IIS7.5后,服务器无法设置状态
有时我在生产环境中遇到异常: 处理信息 进程ID:3832 进程名称:w3wp.exe 帐户名称:NT AUTHORITY \ NETWORK SERVICE 异常信息 异常类型:System.Web.HttpException 异常消息:发送HTTP标头后,服务器无法设置状态。 索取资料 要求网址:http : //www.myulr.pl/logon 请求路径:/ logon 用户主机地址:10.11.9.1 用户:user001 已认证:真 身份验证类型:表格 线程帐户名称:NT AUTHORITY \ NETWORK SERVICE 线程信息 线程ID:10 线程帐户名称:NT AUTHORITY \ NETWORK SERVICE 正在冒充:错误 Stack trace: at System.Web.HttpResponse.set_StatusCode(Int32 value) at System.Web.HttpResponseWrapper.set_StatusCode(Int32 value) at System.Web.Mvc.HandleErrorAttribute.OnException(ExceptionContext filterContext) at System.Web.Mvc.ControllerActionInvoker.InvokeExceptionFilters(ControllerContext controllerContext, IList(1) …

3
如何覆盖@ Html.LabelFor模板?
我有一个简单的字段表格 <div class="field fade-label"> @Html.LabelFor(model => model.Register.UserName) @Html.TextBoxFor(model => model.Register.UserName) </div> 结果是: <div class="field fade-label"> <label for="Register_UserName">Username (used to identify all services, from 4 to 30 chars)</label> <input type="text" value="" name="Register.UserName" id="Register_UserName"> </div> 但我希望该LabelFor代码在<span>内部附加一个,这样我最终可以拥有: <label for="Register_UserName"> <span>Username (used to identify all services, from 4 to 30 chars)</span> </label> 我怎样才能做到这一点? 所有示例都使用,EditorTemplates但这是一个LabelFor。

7
MVC 3无法将字符串作为View的模型传递?
我的模型传递给View时遇到一个奇怪的问题 控制者 [Authorize] public ActionResult Sth() { return View("~/Views/Sth/Sth.cshtml", "abc"); } 视图 @model string @{ ViewBag.Title = "lorem"; Layout = "~/Views/Shared/Default.cshtml"; } 错误讯息 The view '~/Views/Sth/Sth.cshtml' or its master was not found or no view engine supports the searched locations. The following locations were searched: ~/Views/Sth/Sth.cshtml ~/Views/Sth/abc.master //string model is …

11
在ASP.NET MVC的母版页中使用脚本
我对ASP.NET MVC相当陌生,并且在脚本方面遇到了一些麻烦……特别是,我想在大多数页面中使用jQuery,因此将其放在母版页中是有意义的。但是,如果我这样做(来自~/Views/Shared/Site.Master): <script src="../../Scripts/jquery-1.2.6.js" type="text/javascript"></script> 这就是字面上的意思,这取决于客户-当然,只有当我们当前的路线碰巧具有正确数量的等级时,这才起作用。从开始~/Scripts/...不起作用。/Scripts/...如果项目位于站点根目录(我不想假设),则从头开始将是有效的。 我有一种可行的方法(我将在下面发布)-但是:我缺少什么吗? 我宁愿不必使用脚本管理器,因为这似乎破坏了ASP.NET MVC模型的简单性……还是我太担心了? 这是我使其工作的方式,它对非平凡的虚拟机也适用-但似乎过于复杂: <script src="<%=Url.Content("~/Scripts/jquery-1.2.6.js")%>" type="text/javascript"></script>

7
如何在ASP.MVC中指定多行Editor-For的列和行?
在ASP.MVC 3中,如何指定多行EditorFor(文本区域)的列和行?我正在使用[UIHint("MultilineText")],但找不到有关如何为文本区域添加属性的任何文档。 所需的HTML: <textarea cols="40" rows="10"></textarea> 我的MVC 3模型的相关部分: [UIHint("MultilineText")] public string Description { get; set; } 我的Razor cshtml的相关部分: <div class="editor-field"> @Html.EditorFor(model => model.Description) </div> 我所得到的看法来源: <div class="editor-field"> <textarea class="text-box multi-line" id="Description" name="Description"></textarea> </div> 如何设置行和列?

5
MVC控制器:从HTTP正文获取JSON对象?
我们有一个MVC(MVC4)应用程序,该应用程序有时可能会收到从第三方发送到我们特定URL(“ http://server.com/events/ ”)的JSON事件。JSON事件位于HTTP POST的正文中,而正文则严格为JSON(Content-Type: application/json-不在某些字符串字段中包含JSON的表单帖子)。 如何在控制器主体内部接收JSON主体?我尝试了以下内容,但一无所获 [编辑]:当我说什么都没得到时,我的意思是jsonBody始终为null,无论我将其定义为Object还是string。 [HttpPost] // this maps to http://server.com/events/ // why is jsonBody always null ?! public ActionResult Index(int? id, string jsonBody) { // Do stuff here } 请注意,我知道如果我使用强类型输入参数来声明方法,则MVC会进行整个解析和过滤,即 // this tested to work, jsonBody has valid json data // that I can deserialize using JSON.net …
70 asp.net-mvc  json  post 

5
自动映射器-多对象源和一个目标
我正在使用自动映射器来映射多个对象(将db类转换为ui对象)。 地图1: Mapper.CreateMap<sourceone, destination>().ForMember(sss => sss.one, m => m.MapFrom(source => source.abc)); 地图2: Mapper.CreateMap<sourcetwo, destination>().ForMember(sss => sss.two, m => m.MapFrom(source => source.xyz)); destination d = new destination(); //地图1 d = AutoMapper.Mapper.Map<sourceone, destination>(sourceone); //地图2 d = AutoMapper.Mapper.Map<sourcetwo, destination>(sourcetwo); 一旦我调用“地图2”,使用地图1填充的值就会丢失..(即destination.one变为空)。我该如何解决?

9
无法获得Windows身份验证以通过本地IIS工作
因此,我使用Intranet模板创建了一个新的ASP.NET MVC项目。web.config包含适当的值(例如<authentication mode="windows"/>)。 如果我使用VS网络服务器启动Web应用程序,则一切看起来都很好-该页面显示了我的Windows域和用户名以及所有内容。但是,这在Opera和Safari以及IE和FF中都可以使用,这对我来说根本不使用Windows身份验证(据我所知,除IE / FF以外,该功能在任何浏览器中均不起作用)。 下一步是使其通过本地IIS运行。我创建一个主机文件条目,将www.mysite.mydomain指向127.0.0.1。因此,在IIS中,我创建一个具有www.mysite.mydomain绑定的网站,并启用Windows身份验证并禁用匿名身份验证。 我已经设置IE和FF来启用Windows身份验证,如下所示: IE浏览器 将URL添加到Intranet组 确保在高级设置中启用了Windows身份验证 FF 将“ www.mysite.mydomain”放入network.automatic-ntlm-auth.trusted-uris配置设置。 但是,当我在IE / FF中拨打www.mysite.mydomain时,会出现登录提示。有趣的是,即使我在此处输入Windows登录名,它仍然会失败并再次显示登录提示。 我们这里没有活动目录,但我的理解是,该目录应与本地帐户配合使用。 我想不起我需要做的其他事情。有什么建议? 编辑:我们最近切换到使用Active Directory,问题仍然存在。 编辑:当我取消登录提示时,我进入带有以下信息的“ IIS 7.5详细错误”页面: HTTP错误401.2-未经授权由于身份验证标头无效,您无权查看此页面。**

4
登录请求验证令牌问题
我一直在经历一个开发项目的错误日志,发现下面的错误(更名为保护有罪无罪) - 提供的防伪令牌是为用户“”提供的,但当前用户为“ admin”。 要复制这个问题并不是特别困难- 在登录页面打开应用程序 登录之前,请在同一台计算机上的同一浏览器中,在登录页面上打开另一个窗口或选项卡。 在第一个窗口中登录(或者实际上在第二个窗口中,顺序无关紧要) 尝试在剩余的登录窗口中登录 堆栈跟踪为- System.Web.Mvc.HttpAntiForgeryException(0x80004005):提供的防伪令牌是给用户“”的,但当前用户是“ admin”。在System.Web.Helpers.AntiXsrf.AntiForgeryWorker.Validate(HttpContextBase httpContext)(System.Web.Helpers.AntiXsrf.TokenValidator.ValidateTokens(HttpContextBase httpContext,IIdentity身份,AntiForgeryToken sessionToken,AntiForgeryToken fieldToken)在System.Web.Helpers.AntiForgery。在System.Web.Mvc.ControllerActionInvoker.InvokeAuthorizationFilters(ControllerContext controllerContext,IList`1过滤器,ActionDescriptor actionDescriptor)在System.Web.Mvc.Async.AsyncControllerActionInvoker处的System.Web.Mvc.ValidateAntiForgeryTokenAttribute.OnAuthorization(AuthorizationContext filterContext)处的Validate()。 <> c__DisplayClass25。 登录方法签名为- [HttpPost] [AllowAnonymous] [ValidateAntiForgeryToken] public ActionResult Login(LoginModel model, string returnUrl) { ... } 这与Internet“ ASP.NET MVC 4 Web应用程序”模板项目中的方法签名完全相同,这表明Microsoft认为ValidateAntiForgeryToken是必要/最佳实践,或者只是在此处添加了属性,因为使用了该属性。其他地方。 显然,没有什么我可以做的来处理这个问题中这种方法没有达到它的ValidateAntiForgeryToken是预请求过滤器和到达控制器之前就阻止该请求。 我可以在提交表单之前检查用户是否通过Ajax进行了身份验证,并尝试将其重定向到他们,或者只是删除了属性。 问题是这样的-我知道令牌的设计是在用户已经针对您的站点进行身份验证时阻止来自另一个站点(CSRF)的请求,因此,将其从按定义使用的表单中删除是一个问题未经身份验证的用户? 大概在这种情况下,该属性旨在减轻为您的应用程序提供伪造登录表单的恶意行为者的影响(尽管在抛出异常时,大概是用户已经输入了将被记录的详细信息,但可能会向他们发出警报)是错的)。否则,从外部站点向表单提交不正确的凭据将导致与站点本身完全相同的结果吗?我不依靠客户端验证/卫生来清理潜在的不安全输入。 是否有其他开发人员遇到过此问题(或者我们是否有非常有创造力的用户),如果是,您如何解决/缓解它? 更新:此问题完全存在于MVC5中,现在出现错误消息“提供的防伪令牌是针对与当前用户不同的基于声明的用户”。使用默认模板和身份提供程序时。微软开发人员传播者和Troy的PluralSight研究员Adam Tuliper在登录页面上的反伪造令牌中有一个相关的问题和有趣的答案,建议您删除该令牌。

7
最好在MVC中拥有大型控制器或多个控制器?
我们正在ASP.NET MVC中构建一个相当大的HR应用程序,到目前为止,我们的控制器变得越来越大。例如,我们有一个Employee控制器,并且包括了所有雇员视图(个人信息,雇员扣除额,家属等)。这些视图中的每一个都可能具有多个操作或子视图(例如CRUD)。每个动作都相对较小,但是控制器可能具有数十种功能。 是否有拆分控制器的最佳实践?与其让Employee控制器具有数十个视图,不如为每个子类型(即EmployeePersonalInfoController,EmployeeDeductionController,EmployeeDependentController)配备一个控制器会更好吗? 最后,这甚至有关系吗? 更新说明 我最初关心的是CRUD动作。例如,让我们考虑创建和删除... EmployeeController中的当前操作: CreateEmployee() DeleteEmployee() CreateEmployeeDeduction() DeleteEmployeeDeduction() CreateDependent() DeleteDependent() etc. 如果控制器拆分: EmployeeController Create() Delete() EmployeeDeductionController Create() Delete() EmployeeDependentController Create() Delete() EmployeeBenefitController Create() Delete() etc. 在第一种情况下,我们的约100个屏幕分为8-10个大型控制器。在第二个中,我可能会有约50个控制器。

9
在部分视图中包含JavaScript文件
我想知道在局部视图中包含javascript文件的最佳实践是什么。呈现后,这将最终成为我页面html中间的js include标签。从我的角度来看,这不是执行此操作的好方法。它们属于head标签,因此不应阻止浏览器一次性呈现html。 一个例子: 我在“ PictureGallery”局部视图中使用一个jQuery picturegallery插件,因为该局部视图将在多个页面上使用。仅在使用此视图时加载该插件,并且我不需要知道每个局部视图正在使用哪些插件... 感谢您的回答。

3
.NET MVC-如何为Html.LabelFor分配类?
这段代码 <%= Html.LabelFor(model => model.Name) %> 产生这个 <label for="Name">Name</label> 但是我想要这个 <label for="Name" class="myLabel">Name</label> 你是怎样做的?

7
ASP.NET MVC,URL路由:最大路径(URL)长度
场景 我有一个应用程序,使用了良好的旧查询字符串URL结构: ?x=1&y=2&z=3&a=4&b=5&c=6 并将其更改为路径结构: /x/1/y/2/z/3/a/4/b/5/c/6 我们正在使用ASP.NET MVC和(自然地)ASP.NET路由。 问题 问题在于我们的参数是动态的,并且(理论上)我们需要容纳的参数数量没有限制。 一切都好,直到我们被下列火车撞上: HTTP错误400.0-错误请求ASP.NET在URL中检测到无效字符。 当我们的URL超过一定长度时,IIS将抛出此错误。 坚韧不拔 这是我们发现的: 这不是IIS问题 IIS确实有最大路径长度限制,但是上面的错误不是这个。 了解dot iis dot net如何使用请求过滤部分“基于请求限制的过滤” 如果该路径对于IIS而言太长,它将抛出404.14,而不是400.0。 此外,IIS最大路径(和查询)长度是可配置的: <requestLimits maxAllowedContentLength="30000000" maxUrl="260" maxQueryString="25" /> 这是一个ASP.NET问题 经过一番戳后: IIS论坛线程:ASP.NET 2.0的最大URL长度? http://forums.iis.net/t/1105360.aspx 原来,这是一个ASP.NET(实际上是.NET)问题。 事情的核心是,据我所知,ASP.NET无法处理长度超过260个字符的路径。 棺材上的钉子是由哈克(Phil the Haack)本人证实的: 堆栈溢出ASP.NET URL MAX_PATH限制问题ID 265251 问题 那是什么问题呢? 问题是,这有多大限制? 对于我的应用程序,这是一个交易杀手。对于大多数应用程序,这可能不是问题。 那披露呢?我从未听说过有关ASP.NET Routing的任何限制。ASP.NET MVC使用ASP.NET路由的事实使此影响更大。 你怎么看?

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.