Tag: asp.net mvc 3

Google Open Auth 2.0在服务器端获得access_token(错误请求错误,ProtocolError)

我正在尝试通过Google Open Auth 2.0实现用户身份validation。 我已经成功获得了Google的“代码”,现在我正在尝试获取access_token来访问用户的信息。 这是控制器的代码: public void Google(string code) { if (!string.IsNullOrWhiteSpace(code)) { var parameters = new Dictionary(); parameters[“code”] = code; parameters[“client_id”] = ConfigurationProvider.GoogleApplicationId; parameters[“client_secret”] = ConfigurationProvider.GoogleClientSecret; parameters[“redirect_uri”] = “http://localhost:1291” + Url.Action(“GoogleAuth”); parameters[“grant_type”] = “authorization_code”; var keyValuePairs = new string[parameters.Count]; var i = 0; const string keyValueTemplate = “{0}={1}”; foreach (var parameter in parameters) […]

你如何在asp.net mvc中做webforms的autopostbackfunction?

我有一个简单的webgrid显示列表。 我还有一个包含很少项目的combobox。 我希望当用户更改选择时,更改的值应该发布到服务器。 我怎样才能做到这一点? 任何代码片段都会有所帮助。

发布到模型的MVC DropDownList值未绑定

DropDownLists可能是我最不喜欢使用MVC框架的部分。 我的表单中有几个下拉列表,我需要将选定的值传递给ActionResult,该ActionResult接受模型作为其参数。 标记看起来像这样: @Html.LabelFor(model => model.FileType) @Html.DropDownListFor(model => model.FileType.Variety, (SelectList)ViewBag.FileTypes) @Html.LabelFor(model => model.Status) @Html.DropDownListFor(model => model.Status.Status, (SelectList)ViewBag.Status) 我的控制器动作如下所示: [HttpPost] public ActionResult Create(int reviewid, ReviewedFile file) { if (ModelState.IsValid) { UpdateModel(file); } //repository.Add(file); return RedirectToAction(“Files”, “Reviews”, new { reviewid = reviewid, id = file.ReviewedFileId }); } 这应该都很好,除了下拉的值被发布为null。 当我进一步研究ModelState错误时,发现原因是: 从类型’System.String’到类型’PeerCodeReview.Models.OutcomeStatus’的参数转换失败,因为没有类型转换器可以在这些类型之间进行转换。 它应该不是这么难,但确实如此。 所以问题是; 为了正确绑定模型属性,我需要做什么? 顺便说一句,我知道我可以传入一个FormCollection对象,但这意味着更改我目前期望强类型模型参数的unit testing的重要部分。

如何在mvc3中的Controller中访问动态创建的复选框值?

我的视图包含复选框和提交按钮,如下所示。 @using (Html.BeginForm()) { Delete Are you sure you want to delete? @foreach (string resource in resources) { if (resource != “”) { @resource } } @Html.HiddenFor(m => m.AttendeeListString) @Html.HiddenFor(m => m.ResourceListString) } 以下是控制器代码…… public ActionResult DeleteResource(RoomModel roomModel) { … } RoomModel包含一些其他数据…… 现在我如何访问控制器中的复选框值? 注意:当我点击提交按钮时,我有更多需要发送给Controller的信息…任何人都可以建议一些解决方案…. 答案: 我已将这两个属性添加到我的模型中 public List Resources { get; set; } public string[] […]

MVC3全球化问题

我正在开发一个带有下一个文化设置的MVC3应用程序: 首先,当我传递一个整数时,我将视图中的值传递给控制器​​,但是当我传递一个double(3.2)时,控制器中的值返回0,如本问题所述 。 好的模型粘合剂添加: protected void Application_Start() { AreaRegistration.RegisterAllAreas(); ModelBinders.Binders.Add(typeof(double), new DoubleModelBinder()); RegisterGlobalFilters(GlobalFilters.Filters); RegisterRoutes(RouteTable.Routes); } public class DoubleModelBinder : IModelBinder { public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) { ValueProviderResult valueResult = bindingContext.ValueProvider .GetValue(bindingContext.ModelName); ModelState modelState = new ModelState { Value = valueResult }; object actualValue = null; try { actualValue = Convert.ToDouble(valueResult.AttemptedValue, CultureInfo.InvariantCulture); } catch […]

动作方法参数的Autofacdependency injection(ASP MVC3)

我有以下设置 public interface IObject { string Name { get; set;} } public class ConcreteObject : IObject { public string Name { get; set; } } public ActionResult Index(IObject myObject) { return View(); } 我有一个实现IObject的具体类,我使用dependency injection将这个具体类绑定到接口。 使用Autofac,我也有以下设置 var builder = new ContainerBuilder(); builder.RegisterModule(new AutofacWebTypesModule()); builder.RegisterSource(new ViewRegistrationSource()); builder.RegisterFilterProvider(); builder.RegisterControllers(Assembly.GetExecutingAssembly()).InjectActionInvoker().PropertiesAutowired(); builder.RegisterModelBinders(Assembly.GetExecutingAssembly()); builder.RegisterModelBinderProvider(); builder.RegisterType().As().WithParameter(“injectActionMethodParameters”, true); builder.RegisterType().As().InstancePerHttpRequest(); var container = […]

将当前日期分配给MVC中的属性

我正在为用户创建一个模型,我希望连接的属性设置为Now()。 这是我的代码: [DefaultValue(DateTime.Now)] public DateTime joined {get; set;} 我收到错误: 属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式。 我究竟做错了什么? 什么是做我想要的最好的方法?

我该如何设计这个页面?

请看这张照片: 我之间有一对多的关系。 人和地址。 这里的问题是它是一个“添加”forms,所以即使主记录也不在数据库中。 我该如何设计这个UI和实现? 如果此人在弹出窗口中单击“保存地址”,该怎么办? 我应该将该特定地址与哪个人联系起来? 在Asp.Net中我会将它存储在ViewState中,所以这个问题不会出现。 但是我如何做这个Asp.Net MVC 3.0? 我应该将它存储在Session中,然后当在主窗体上单击“save”时,我会从会话中检索所有地址并保存它。 这看起来是一种非常强硬的方法,因为如果这个人在两个标签中打开相同的表单怎么办? 我应该继续在子表单上创建隐藏字段并以CSV格式存储吗? 这有效,但会产生一个无用的JavaScript代码。 我希望我的问题清楚。 如果没有,请告诉我。 你如何在Asp.Net MVC中处理这个问题? 谢谢。

如何在不使用隐藏字段的情况下检测表单字段是否已更改

我正在使用ASP.NET MVC 3,并且需要检测表单字段是否已在服务器端更改。 我知道使用隐藏字段的技巧,但我想知道是否有办法通过使用API​​来做到这一点? 基本上,我有我的模型的编辑屏幕,其中一个字段是可以指定的可选ID。 如果指定了字段,我必须确保它是唯一的(没有其他模型具有它)。 因此,在编辑控制器上,我想运行validation,但仅在该字段已更改时才运行。 请注意,我不需要知道以前的值与新值,只要字段值已更改。

10秒后MVC3会话超时

需要一些ASP.Net Web应用程序中的会话超时问题的帮助。 基本上会话在登录后大约10-15秒到期。 附注:我使用FormsAuthentication和基本安全性的自定义组合 我的Session.IsNewSession在登录后3-4次良好的回发后设置为true。 我的Web.Config有以下…… 我相信超时指的是分钟…. 我有一个注册了ActionFilter的MVC 3应用程序 public static void RegisterGlobalFilters(GlobalFilterCollection filters) { filters.Add(new MyActionFilterAttribute()); } 在OnActionExecuting内部,我检查当前会话以防止访问未授权用户无法访问的控制器操作。 public override void OnActionExecuting(ActionExecutingContext filterContext) { HttpContext ctx = HttpContext.Current; Player player = SessionHelper.GetCurrentPlayer(filterContext.HttpContext.Session); if (player == null && ctx != null) { player = SessionHelper.GetCurrentPlayer(ctx.Session); } if (player == null || (player.IsAdministrator == false && […]