Tag: asp.net mvc 3

如何使用Html Agility Pack超时请求

我正在向当前处于脱机状态的远程Web服务器发出请求(故意)。 我想找出超时请求的最佳方法。 基本上,如果请求的运行时间超过“X”毫秒,则退出请求并返回null响应。 目前网络请求只是坐在那里等待响应….. 我怎样才能最好地解决这个问题? 这是一个当前的代码片段 public JsonpResult About(string HomePageUrl) { Models.Pocos.About about = null; if (HomePageUrl.RemoteFileExists()) { // Using the Html Agility Pack, we want to extract only the // appropriate data from the remote page. HtmlWeb hw = new HtmlWeb(); HtmlDocument doc = hw.Load(HomePageUrl); HtmlNode node = doc.DocumentNode.SelectSingleNode(“//div[@class=’wrapper1-border’]”); if (node != null) { […]

ASP.NET MVC3如何直接从控制器引用视图

在我的控制器中,我想指定一个不同于默认值的视图。 像这样 : public ActionResult EditSurvey(Int32 id) { Survey survey = _entities.Surveys.Single(s => s.Id == id); return View(“Survey”,survey); } 但是我没有将视图指定为字符串(“Survey”),而是想直接引用它,所以如果我决定稍后更改我的视图名称,则不必手动更改此字符串。 所以我正在寻找这样的东西: public ActionResult EditSurvey(Int32 id) { Survey survey = _entities.Surveys.Single(s => s.Id == id); return View(Views.Admin.Survey,survey); }

DefaultModelBinder无法反序列化作为JSON对象传递给操作的.NET Dictionary对象?

我有一个非常简单的课程: public class FilterItem { public Dictionary ItemsDictionary { get; set; } public FilterItem() { ItemsDictionary = new Dictionary(); } } 我想在客户端上填充字典中的数据,然后将其作为JSON对象传递给我的控制器操作。 但无论我在客户端上尝试什么,DefaultModelBinder似乎都无法反序列化它。 以下是调用我的操作的示例javascript代码: var simpleDictionary = {“ItemsDictionary”: {“1”: “5”, “2”: “7”}}; $.ajax({ cache: false, type: “POST”, data: JSON.stringify(simpleDictionary), contentType: “application/json; charset=utf-8”, url: “/Catalog7Spikes/GetFilteredProductsJson”, success: function (data) {…}); 这是我的动作方法的简化版本: [HttpPost] public ActionResult GetFilteredProductsJson(FilterItem filterItem) { […]

使用Unity 2和MVC 3将类注入Authentication属性

我读了很多文章,指出如何做到这一点,即: 堆栈溢出解决方案 Brad Wilsons出色的教程 这些看起来效果很好,但是当我遵循这里的一些指导原则时 保护ASP.NET MVC 3应用程序 我好像来了一个收割机。 对我来说,问题是当我将AuthorizationAttribute添加为GlobalFilter而不仅仅是装饰控制器/动作时。 虽然依赖解析器似乎被调用并设置我公开的[Dependancy]属性,当它实际到达我覆盖AuthorizeAttribute的OnAuthorization()方法的代码部分时,我的public [Dependency]属性为null。 当我从全局filter中删除它并装饰一个控制器时,它似乎工作。 如果需要更多信息,我可以发布代码。 编辑:为了进一步扩展这里我的一些代码: 的global.asax.cs public static void RegisterGlobalFilters(GlobalFilterCollection filters) { // If I have this here the my [Dependency] attribute does not keep it’s value // If I remove it and decorate the controller the [Dependency] attribute keeps it value filters.Add(new BasicAuthenticationAttribute()); filters.Add(new […]

路径中的非法字符。 使用Skip并使用IEnumerable时出错

嗨,我的控制器中有以下操作 [AcceptVerbs(HttpVerbs.Post)] public ActionResult Index() { IEnumerable myresult = filterData(); totalCount = myresult.Count(); ViewBag.totalCount = totalCount; //myresult = myresult.Skip(100 * pageIndex).Take(100); return View(myresult); } 这是我的看法 @model IEnumerable @{ ViewBag.Title = “Survey Results”; } @using (Html.BeginForm()) { DEL … @Html.DisplayFor(x => x, new { pageIndex = ViewBag.index }) } 我对SurveyResult有一个局部视图,但我不包括它,因为我认为它不相关。 这是我的问题。 上面的代码工作正常,但只要我取消注释以下行 myresult = myresult.Skip(100 * […]

ASP.NET MVC 3 – 处理会话变量

我有一个使用Form的身份validation的应用程序,当用户登录时,我检索用户的实际名称并将其分配给会话变量,如下所示: [HttpPost] public ActionResult LogOn(LogOnModel model, string returnUrl) { if (ModelState.IsValid) { if (Membership.ValidateUser(model.UserName, model.Password)) { Session[“Name”] = client.GetName(model.UserName); FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe); return RedirectToAction(“Index”, “Home”); } } } 然后将其显示在我的索引视图中,如下所示: Welcome, @Session[“Name”] 所以,如果我的名字是鲍勃,它会在我的视图中输出“欢迎,鲍勃”,这很好。 但是,一旦我离开页面或关闭我的浏览器并在几分钟后返回,似乎这些Session变量已被销毁,因为它只输出“欢迎”,但我仍然登录,所以我的会话没有被销毁? 我在web.config中将会话设置为在60分钟后被销毁: 编辑 这只有在我登录时检查“记住我”框时才会发生,因为我猜这会保留一个cookie客户端,所以当我重新打开浏览器时,我仍然登录但是创建一个新的会话ID,因为我做了一个Response.Write(Session.SessionID)在我关闭浏览器之前,在我的索引页面上Response.Write(Session.SessionID)并且ID与我重新打开它时的ID不同。 如果我没有选中“记住我”框,那么我将在重新打开浏览器后再次登录

将AjaxOnlyAttribute和ChildActionOnlyAttribute组合到一个动作filter中

我希望能够在控制器上标记一个动作,从ajax调用和RenderAction调用。 问题是这两个属性都衍生或实现了不同的抽象。 一个出路是下一个: [AjaxOnly] PartialViewResult GetViewAjax(int foo) { return GetView(foo); } [ChildActionOnly] PartialViewResult GetView(int foo) { … } 但这根本不是很好。 我正在谈论的AjaxOnly属性是: public sealed class AjaxOnlyAttribute : ActionFilterAttribute { #region Public members public override void OnActionExecuting(ActionExecutingContext filterContext) { if (filterContext == null) throw new ArgumentNullException(“filterContext”); if (filterContext.HttpContext.Request.Headers[“X-Requested-With”] != “XMLHttpRequest”) filterContext.Result = new HttpNotFoundResult(); } #endregion } 这种方法取自MVC3期货。 […]

UserPrincipal.GetGroups与UserPrincipal.GetAuthorizationGroups?

我正在使用ASP.Net 4.0 MVC来查询活动目录。 我试图获取用户的组成员资格列表,并迭代它们。 我有一个奇怪的问题。 获取我正在使用的组: PrincipalSearchResult groups = up.GetGroups(); 哪个在localhost上工作得很好但在移动到IIS6时返回一个空集。 所以我试着用这个: PrincipalSearchResult groups = up.GetAuthorizationGroups(); 哪个在IIS6上运行良好,但在localhost上返回一个空集。 这两种方法有什么区别? 为什么我可以在IIS6中使用一个而不在localhost上使用? 为什么我可以在localhost而不是IIS6中使用另一个?

如何在mvc3,C#中将数字显示为2位小数?

可能重复: 使用字符串格式显示最多2位或简单整数的十进制 如何设置2位小数的小数点? 我认为我有Price字段。 它具有以下值2.5 and 44.我想将此值显示为2.50 and 44.00我使用以下代码 @{decimal prolistprice = decimal.Parse(item.OtherFields[“Price”].ToString());} $@Math.Round(prolistprice, 2, MidpointRounding.AwayFromZero) 其中item.OtherFields[“price”] is a object我将其转换为字符串,然后十进制 但Math.round不工作它只显示2.5和44 ..任何人都可以帮助这个

如何在MVC 3中编辑Html.DisplayFor方法的CSS?

我使用以下代码在我的视图中显示视图模型中的文本: @Html.DisplayFor(m => m.Name) 当我查看IE9中的HTML细节(我必须在工作中使用)时,没有与该名称相关联的类,它只使用Body CSS样式而不是display-field类样式。 有谁知道可能导致此问题的原因或我如何编辑创建的文本的CSS?