Questions tagged «asp.net-mvc»

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

5
Web API和ValidateAntiForgeryToken
我们有一些现有的MVC Web服务,这些Web服务在网页中称为AJAX样式。这些服务利用ValidateAntiForgeryToken属性来帮助防止请求伪造。 我们正在寻求将这些服务迁移到Web API,但似乎没有等效的防伪功能。 我想念什么吗?是否存在使用Web API解决请求伪造的其他方法?

8
ASP.NET MVC-捕获所有路由和默认路由
为了使我的应用程序正确产生404错误,我在路由表的末尾实现了一条捕获所有路由,如下所示: routes.MapRoute( "NotFound", _ "{*url}", _ New With {.controller = "Error", .action = "PageNotFound"} _ ) 但是,要使其正常工作,我必须删除默认路由: {controller}/action/{id} 但是现在已经删除了默认设置,我的大多数操作链接都不再起作用,而我发现让它们再次起作用的唯一方法是为每个控制器/操作添加单独的路由。 有没有一种更简单的方法,而不是为每个控制器/动作添加路由? 如果用户尝试导航到未知路由,是否可以创建一个默认路由,该默认路由仍允许全部路由工作?

2
MVC ASP.NET中HttpContext.Current和Controller.Context之间的区别
我正在开发MVC ASP .NET应用程序。我对这两个都比较陌生。 在控制器中,我尝试获取当前的登录用户,似乎有两种方法可以执行此操作: System.Web.HttpContext.Current.User.Identity.Name 要么 HttpContext.User.Identity.Name 这些有什么区别?据我所知,在MVC框架中,控制器将当前的HttpContext存储为属性,因此这些方法是相同的。那是对的吗?

7
ASP.net MVC返回JSONP
我正在寻找跨域返回一些JSON的方式,并且我知道这样做的方法是通过JSONP而非纯JSON。 我正在使用ASP.net MVC,所以我在考虑只是扩展JsonResult类型,然后扩展Controller,以便它也实现了Jsonp方法。 这是最好的解决方法,还是有内置的方法ActionResult可能更好? 解决方案:我继续这样做。仅供参考,我添加了一个新结果: public class JsonpResult : System.Web.Mvc.JsonResult { public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } HttpResponseBase response = context.HttpContext.Response; if (!String.IsNullOrEmpty(ContentType)) { response.ContentType = ContentType; } else { response.ContentType = "application/javascript"; } if (ContentEncoding != null) { response.ContentEncoding = …

6
使用JavaScript / jQuery重定向到ASP.NET MVC中的另一个页面
我想使用JavaScript / jQuery / Ajax从ASP.NET MVC 3.0中的一页重定向到另一页。在按钮单击事件中,我已经编写了如下的JavaScript代码。 function foo(id) { $.post('/Branch/Details/' + id); } 我的控制器代码是这样的: public ViewResult Details(Guid id) { Branch branch = db.Branches.Single(b => b.Id == id); return View(branch); } 当我单击按钮时,它正在BranchController内调用Details动作,但不会返回到Details视图。 我没有收到任何错误或异常。在Firebug中显示状态200 OK 。我的代码有什么问题,如何重定向到“详细信息”视图页面?

16
创建时显示“ Id字段为必填”验证消息;ID未设置为[必填]
当我尝试使用Asp.Net MVC 2中的“创建样式”操作创建实体时,就会发生这种情况。 POCO具有以下属性: public int Id {get;set;} [Required] public string Message {get; set} 在创建实体时,会自动设置ID,因此在Create操作中不需要它。 ModelState说“ Id字段是必需的”,但我没有将其设置为。这里有自动的东西吗? 编辑-原因揭示 布拉德·威尔逊(Brad Wilson)通过保罗·斯佩兰萨(Paul Speranza)在他说的以下评论之一中回答了这个问题的原因(欢呼保罗): 您正在提供ID的值,只是不知道您的身份。它位于默认路由(“ {controller} / {action} / {id}”)的路由数据中,其默认值为空字符串,该字符串对int无效。使用操作参数上的[Bind]属性来排除ID。我的默认路由是:new {controller =“ Customer”,action =“ Edit”,id =“”} //参数默认值 编辑-更新模型技术 实际上,我通过使用TryUpdateModel和与之相关的exclude参数数组更改了再次执行此操作的方式。 [HttpPost] public ActionResult Add(Venue collection) { Venue venue = new Venue(); if (TryUpdateModel(venue, null, …

7
在Asp.NET MVC中以dd / mm / yyyy格式显示DateTime值
是否可以借助中的方法以dd / mm / yyyy格式显示DateTime值?我试图通过使用一些格式并在相关属性中添加一些注释(如下所示)来做到这一点,但这没有任何意义。解决该问题的任何帮助将不胜感激。HTML HelperAsp.NET MVC@Html.LabelFor 模型: [DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)] public Nullable<System.DateTime> RegistrationDate { get; set; }

3
在ASP.NET MVC中使用Tempdata-最佳实践
我正在使用ASP.NET MVC 3来构建Web应用程序。 我试图做的是在两个控制器之间传递值,尽管有很多方法可以做到这一点,我对此特别感兴趣TempData。 public ActionResult Action1() { string someMessage; Test obj = SomeOperation(); if(obj.Valid) { someMessage = obj.UserName; } else { someMessage = obj.ModeratorName; } TempData["message"] = someMessage; return RedirectToAction("Index"); } public ActionResult Index() { ViewBag.Message = TempData["message"] return View(); } 那么TempData这里的用法正确吗?我的意思是,按照最佳编程实践,这是正确的使用方式TempData吗? 在什么实时情况下应该TempData使用? 注意:我已经通过以下链接 何时在ASP.Net MVC中使用TempData与Session http://www.gregshackles.com/2010/07/asp-net-mvc-do-you-know-where-your-tempdata-is/ 谢谢

5
从系统中的其他位置调用SignalR集线器客户端
我已经建立了SignalR集线器以在服务器和客户端之间进行通信。中心服务器端代码存储在名为Hooking.cs的类中。我想要的是能够调用Hooking.cs中定义的方法,以允许我从应用程序中的任何位置向任何连接的客户端广播消息。似乎为每个客户端/服务器调用都创建了一个新的Hooking.cs实例,因此我希望能够使用类似 var hooking = new Hooking(); hooking.Test(); 使用Hooking.cs中定义的Test()方法,例如 public static void Test() { Clients.test() } 并带有客户端javascript var hooking = $.connection.hooking; hooking.test = function() { alert("test worked"); }; $.connection.hub.start() 不幸的是,它不是那么简单,因为客户端不是静态的,因此不能从静态方法访问。 在查看SignalR源代码时,我遇到了一种看似有希望的方法Hubs.Invoke(string hubName, string method, params object[] args),所以我希望可以使用诸如之类的方法,Hubs.Invoke("Hooking", "Test")但不能使其正常工作。 任何帮助将不胜感激

3
MVC将部分视图作为JSON返回
有没有一种方法可以通过将部分内容作为MVC的JSON响应的一部分返回HTML字符串? public ActionResult ReturnSpecialJsonIfInvalid(AwesomenessModel model) { if (ModelState.IsValid) { if(Request.IsAjaxRequest() return PartialView("NotEvil", model); return View(model) } if(Request.IsAjaxRequest()) { return Json(new { error=true, message = PartialView("Evil",model)}); } return View(model); }

2
ASP.NET MVC:使用HtmlHelper.Hidden无法呈现隐藏字段值
我的应用程序发生了一些很奇怪的事情: 我的ViewModel具有以下属性: public int? StakeholderId { get; set; } 它以部分视图的形式呈现,如下所示: <%= Html.Hidden("StakeholderId", Model.StakeholderId) %> 表单被提交,相关的控制器动作生成一个id并更新模型,然后返回与更新后的模型相同的视图 我遇到的问题是,即使StakeholderId现在具有值,隐藏字段在第二次呈现的“ value”属性中也没有任何内容。 如果我只是自己输出值,它将显示在页面上,因此我可以通过执行以下操作来呈现值: <input type="hidden" id="StakeholderId" name="stakeholderId" value="<%: Model.StakeholderId %>" /> 但是,助手没有获取更新的值,这很奇怪? (我使用jQuery提交表单并将操作结果呈现到div中,但是我已经检查过,在jQuery执行任何操作之前,返回的html已经是错误的,因此我认为这与它没有太大关系任何东西) 更新 从那以后,我发现我也可以在控制器操作返回部分视图之前清除相关的ModelState键。



10
为什么Visual Studio代码格式不能正确用于Razor标记?
或者,我宁愿问一下,什么时候VS代码格式化才能正确用于Razor标记?格式化适用于大多数结构,但似乎会阻塞“ if”块。下面的代码是由VS格式化的。用一个缩进来修复这种情况非常容易,但是我很好地接受了日常使用的格式设置,并且喜欢在我的大部分代码中经常使用它,因此,我尽可能避免使用手动格式设置。现在,我只是将其保留为VS格式。 @{ if (User.Identity.IsAuthenticated) { <text>Hello </text> @Html.Display("@ViewBag.UserName") <text> - </text> @Html.ActionLink("Sign Out", "LogOff", "Account", null, new { style = "font-weight: bold;" }) } } 我认为,对于可读性来说,重要的是,例如,上面的if块的主体要缩进,除了看起来更好。

12
如何显示DisplayAttribute.Description属性值?
我有一个模型类,具有这样的属性: [Display(Name = "Phone", Description="Hello World!")] public string Phone1 { get; set; } 在我的视图中显示标签并渲染文本框以供输入非常简单: @Html.LabelFor(model => model.Organization.Phone1) @Html.EditorFor(model => model.Organization.Phone1) @Html.ValidationMessageFor(model => model.Organization.Phone1) 但是,如何渲染Description注释属性的值,即“ Hello World!”?

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.