Tag: asp.net mvc

如何处理ASP.NET MVC窗体中的checkbox?

警告:这个问题已经过了五年了! 您最好的select是search更新的问题,或者在下面search您的具体版本的MVC,因为许多答案现在已经过时了。 如果您确实find适合您的版本的答案,请确保答案包含您正在使用的MVC版本。 (原始问题从下面开始) 这对我来说似乎有点奇怪,但据我所知,这是你如何做到的。 我有一个对象的集合,我希望用户select一个或多个。 这对我说“与checkboxforms”。 我的对象没有任何“select”的概念(它们是通过反序列化wcf调用而形成的基本POCO)。 所以,我做了以下几点: public class SampleObject{ public Guid Id {get;set;} public string Name {get;set;} } 在看法: <% using (Html.BeginForm()) { %> <%foreach (var o in ViewData.Model) {%> <%=Html.CheckBox(o.Id)%>&nbsp;<%= o.Name %> <%}%> <input type="submit" value="Submit" /> <%}%> 而且,在控制器中,这是唯一可以看出用户检查了哪些对象的方法: public ActionResult ThisLooksWeird(FormCollection result) { var winnars = from x in result.AllKeys […]

jQuery的Ajax调用和Html.AntiForgeryToken()

我已经在我的应用程序中实施了CSRF攻击的缓解措施,以下是我在互联网上的一些博客文章中阅读的信息。 特别是这些职位一直是我执行的驱动程序 ASP.NET和Web工具开发人员内容小组的ASP.NET MVC最佳实践 Phil Haack博客对跨站请求伪造攻击的剖析 ASP.NET MVC框架中的AntiForgeryToken -来自David Hayden博客的Html.AntiForgeryToken和ValidateAntiForgeryToken属性 基本上那些文章和build议说为了防止CSRF攻击,任何人都应该执行下面的代码: 1)在接受POST Http动词的每个动作上添加[ValidateAntiForgeryToken] [HttpPost] [ValidateAntiForgeryToken] public ActionResult SomeAction( SomeModel model ) { } 2)在向服务器提交数据的表单中添加<%= Html.AntiForgeryToken() %>助手 <div style="text-align:right; padding: 8px;"> <%= Html.AntiForgeryToken() %> <input type="submit" id="btnSave" value="Save" /> </div> 无论如何,在我的应用程序的一些部分,我正在使用jQuery的Ajax POST到服务器,根本没有任何forms。 例如,我让用户点击图片来执行特定操作。 假设我有一个包含活动列表的表格。 我在表格上的一列中有一个图像,标记为“已完成活动”,当用户单击该活动时,我正在执行Ajax POST,如以下示例所示: $("a.markAsDone").click(function (event) { event.preventDefault(); $.ajax({ type: "post", dataType: "html", url: […]

Asp.Net MVC:为什么我的视图传递NULL模型回到我的控制器?

我无法弄清楚为什么我的视图只传递一个模型的NULL到我的控制器。 这是一个编辑post的方法。 我用Edit Post方法检查了其他控制器,它们的结构和这个方法一样,并且工作正常。 这似乎只是这个观点和控制者。 这是我的看法: @model Non_P21_Quote_System_v1._0.Models.gl_code @{ ViewBag.Title = "Edit"; Layout = "~/Views/Shared/_Layout.cshtml"; } <h2>Edit</h2> @if (TempData["Message"] != null) { <div style="color:green"> @TempData["Message"] </div><br /> } @if (ViewBag.error != null) { <div style="color:red"> <h3>@ViewBag.error</h3> </div><br /> } @using (Html.BeginForm()) { @Html.AntiForgeryToken() <div class="form-horizontal"> <h4>gl_code</h4> <hr /> @Html.ValidationSummary(true, "", new { @class = "text-danger" […]

IIS 7中的ASP MVC导致:HTTP错误403.14 – 禁止

我正在开发一个ASP MVC Web项目。 现在我有一个要求,迫使我部署到IIS7 inmiddle开发(检查一些function)。 当我尝试input网站的URL时,我收到上述错误信息。 (注:开发机器:Vista Home Premium,IIS7) 到目前为止我所做的是: 编辑HOSTS文件(C:\ WINDOWS \ system32 \ drivers \ etc \ hosts)。 把两个域名(127.0.0.1 domain1.com&127.0.0.1 domain2.com)。 创build一个文件夹c:\网站\ dirOfApplication并从Visual Studio 8内部署到此文件夹。 在IIS7中创build了一个主机名为domain1.com和application文件夹的新站点。 在Web浏览器中input地址domain1.com会导致上述错误(HTTP错误403.14 – 禁止 – Web服务器configuration为不列出此目录的内容。) 我想我错过了什么,但不知道是什么! 尝试部署文件System.Web.Mvc,System.Web.Abstraction&System.Web.Routing具有相同的结果。 每当我尝试击中F5并运行应用程序,它工作正常!

ASP.NET MVC自定义error handlingApplication_Error Global.asax?

我有一些基本的代码来确定我的MVC应用程序中的错误。 目前在我的项目中,我有一个名为Error与控制器的操作方法HTTPError404() , HTTPError500()和General() 。 他们都接受一个string参数error 。 使用或修改下面的代码。 将数据传递给错误控制器进行处理的最佳方式是什么? 我希望有一个可靠的解决scheme。 protected void Application_Error(object sender, EventArgs e) { Exception exception = Server.GetLastError(); Response.Clear(); HttpException httpException = exception as HttpException; if (httpException != null) { RouteData routeData = new RouteData(); routeData.Values.Add("controller", "Error"); switch (httpException.GetHttpCode()) { case 404: // page not found routeData.Values.Add("action", "HttpError404"); break; case 500: // […]

MVC表单无法发布对象列表

所以我有一个有问题的MVC Asp.net应用程序。 基本上,我有一个包含窗体的视图,其内容绑定到一个对象列表。 在这个循环中,它加载PartialView的项目被循环。 现在一切正常,直到提交表格。 当它被提交时,控制器被发送一个空对象列表。 下面的代码演示了这些问题。 父视图: @model IEnumerable<PlanCompareViewModel> @using (Html.BeginForm("ComparePlans", "Plans", FormMethod.Post, new { id = "compareForm" })) { <div> @foreach (var planVM in Model) { @Html.Partial("_partialView", planVM) } </div> } _partialView: @model PlanCompareViewModel <div> @Html.HiddenFor(p => p.PlanID) @Html.HiddenFor(p => p.CurrentPlan) @Html.CheckBoxFor(p => p.ShouldCompare) <input type="submit" value="Compare"/> </div> 这些是上述代码的类: PlanViewModel: public class PlansCompareViewModel […]

多态模型绑定

在之前的MVC版本中,这个问题已经被问到了。 这个博客也有关于解决这个问题的方法。 我想知道是否MVC3引入了任何可能的帮助,或者如果有任何其他的select。 简而言之。 这是情况。 我有一个抽象的基础模型,和2个具体的子类。 我有一个用EditorForModel()渲染模型的强types视图。 然后我有自定义模板来呈现每个具体types。 问题出现在后期。 如果我做了后置动作方法以基类作为参数,那么MVC不能创build它的抽象版本(我不想要反正,我想它创build实际的具体types)。 如果我创build了多个仅通过参数签名变化的后操作方法,那么MVC抱怨它是不明确的。 所以据我所知,我有几个关于如何解决这个问题的select。 我不喜欢其中的任何一种,但是我会在这里列出来: 创build一个自定义的模型绑定器,如Darin在我链接的第一篇文章中所build议的。 创build一个鉴别属性作为我build议链接的第二篇文章。 根据types发布到不同的操作方法 ??? 我不喜欢1,因为它基本上是隐藏的configuration。 其他一些开发代码的开发人员可能并不知道,并且浪费了大量的时间来弄清楚为什么事情会改变。 我不喜欢2,因为它似乎有点哈克。 但是,我倾向于这种方法。 我不喜欢3,因为这意味着违反干。 还有其他build议吗? 编辑: 我决定采用达林的方法,但做了一点小改变。 我把这个添加到我的抽象模型中: [HiddenInput(DisplayValue = false)] public string ConcreteModelType { get { return this.GetType().ToString(); }} 然后隐藏自动生成在我的DisplayForModel() 。 唯一要记住的是,如果你不使用DisplayForModel() ,你必须自己添加它。

MVC 4 Razorfile upload

我是新来的MVC 4,我试图在我的网站上实施file upload控制。 我无法find错误。我在我的文件中得到一个空值。 控制器: public class UploadController : BaseController { public ActionResult UploadDocument() { return View(); } [HttpPost] public ActionResult Upload(HttpPostedFileBase file) { if (file != null && file.ContentLength > 0) { var fileName = Path.GetFileName(file.FileName); var path = Path.Combine(Server.MapPath("~/Images/"), fileName); file.SaveAs(path); } return RedirectToAction("UploadDocument"); } } 视图: @using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { […]

ASP.NET MVC中的会话variables

我正在编写一个Web应用程序,允许用户浏览网站内的多个网页,提出某些请求。 用户input的所有信息都将存储在我创build的对象中。 问题是我需要从网站的任何部分访问这个对象,我不知道最好的方法来完成这一点。 我知道一个解决scheme是使用会话variables,但我不知道如何在asp.netnet MVC中使用它们。 我会在哪里声明一个会话variables? 有没有其他的方法?

ASP.NET MVC 404error handling

可能重复: 我怎样才能正确处理ASP.NET MVC中的404? 我已经在Asp.Net MVC(RC 5)中的404 Httperror handling程序进行了修改,我仍然得到标准的404错误页面。 我需要改变IIS中的东西吗?