标签: model-binding

如何更改TemplateInfo.HtmlFieldPrefix的列表索引?

如何更改HtmlFieldPrefix的索引?

我是Children[0]从EditorFor()获得的,我想制作它Children[@Model.Id]
或者Children[2].Children[4]来自EditorFor()而我想制作它Children[@"ParentModel".Id].Children[@Model.Id]

直到运行时我才会知道实际的前缀.最好有内置的方法来改变它吗?
或者只是弄乱字符串?我还是C#字符串函数的新手.

c# model-binding mvc-editor-templates razor asp.net-mvc-3

5
推荐指数
1
解决办法
1675
查看次数

使用模型绑定从MVC 4中的List <T>中选择项目

给一个班级

public class Person
{
    // Some general properties

    public List<Hobby> Hobbies { get; set; }
}

public class Hobby
{
    // Some properties e.g. Name, etc.
}

static List<Hobby> AllHobbies { get; }
Run Code Online (Sandbox Code Playgroud)

是否可以创建一个允许用户使用模型绑定选择他的爱好的视图?

在视图中肯定可以循环AllHobbies并渲染<input type="checkbox" />每个,然后在回发控制器中手动连接所选值.这似乎应该可以用模型绑定,但我不知道如何.

asp.net-mvc model-binding asp.net-mvc-4

5
推荐指数
1
解决办法
2万
查看次数

ASP.NET MVC - 复杂模型验证

我有一个像这样的ViewModel类:

class CaseModel {
    public Boolean     ClientPresent { get; set; }
    public ClientModel Client        { get; set; }
}

class ClientModel {
    [Required]
    public String      FirstName     { get; set; }
    [Required]
    public String      LastName      { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

视图页面包含a <input type="checkbox" name="ClientPresent" />Html.EditorFor( m => m.Client )部分视图.

这个想法是,当用户提供有关案例(业务域对象)的信息时,他们可以选择不通过取消选中ClientPresent框来指定有关客户端(另一个商业对象)的任何信息.

我希望ASP.NET MVC不对子ClientModel对象执行任何验证 - 但是当表单被POST回服务器时会自动填充CaseModel.Client属性,但是因为FirstName并且LastName(不一定)由用户提供它表示它未通过[Required]验证属性,因此ViewData.ModelState.IsValid返回false并且用户获得验证错误消息.

我怎么能得到它所以CaseModel.Client如果CaseModel.ClientPresent是假的话就不会被证实?

请注意,它ClientModel是一个完全独立的ViewModel类,并在应用程序的其他位置使用(例如在ClientController类中,允许用户编辑客户端的各个实例).

validation asp.net-mvc model-binding asp.net-mvc-2

5
推荐指数
1
解决办法
3330
查看次数

通用类型的ASP.NET Web API模型绑定器

对应的MVC问题一致,是否有一种方法可以为ASP.NET Web API中的泛型类型创建模型绑定程序?

如果是,如何处理绑定器中的类型检查和实例化?假设模型资料夹是用于URL参数的,请考虑

[ModelBinder(typeof(MyTypeModelBinder))]
public class MyType<T>
{
//...
}
Run Code Online (Sandbox Code Playgroud)

public class MyTypeModelBinder : IModelBinder
{
public bool BindModel(HttpActionContext actionContext, ModelBindingContext bindingContext)
{
    // check if type if valid? Something like this...
        if (!(bindingContext.ModelType.IsGenericType && bindingContext.ModelType.GetGenericTypeDefinition() == typeof(MyType<>)))
        {
            return false;
        }
    // create instance...using Activator?
}

}
Run Code Online (Sandbox Code Playgroud)

c# asp.net model-binding asp.net-web-api

5
推荐指数
0
解决办法
1132
查看次数

模型绑定来自KendoUI Grid的排序字段

我正在使用KendoUI Grid来显示数据.我的服务器分页工作就像一个魅力.kendo网格中的每个页面更改是对服务器的新ajax请求,服务器返回正确的数据页面.我现在正在尝试进行服务器端排序,但是我无法将模型绑定绑定到排序值.

这就是Kendo Grid的请求:

我的动作方法如下所示:

public JsonResult GetReports(int pageSize, int skip, List<KendoSort> sort)
{
    // sort is not being populated with the right data.
}
Run Code Online (Sandbox Code Playgroud)

KendoSort是一个自定义类:

public class KendoSort
{
    public string Field { get; set; }
    public string Dir { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我知道我做得不对.我的操作方法应如何正确捕获为排序提供的数据?屏幕截图仅显示排序集合中的单个项目,但网格可以传递更多.例如,它还可能包含一个额外的类别:

sort[1][field]: reportName
sort[1][dir]: asc
Run Code Online (Sandbox Code Playgroud)

基本上它会说"按升序排序,然后按升序排序".如何将这些数据导入到我的操作方法中而不必四处寻找Request并手动解析参数?

ajax asp.net-mvc model-binding asp.net-mvc-3 kendo-ui

5
推荐指数
1
解决办法
4139
查看次数

使用局部视图对集合属性进行模型绑定

假设我有这样的模型:

public class Foo {
    public List<Bar> Bars { get; set; }
    public string Comment { get; set; }
}

public class Bar {
    public int Baz { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我想要一个Foo让用户编辑Bar项目的视图.但有一个问题:我希望Bar通过局部视图处理编辑.

@model Web.ViewModels.Foo

@using(Html.BeginForm()) {
    @Html.Partial("_EditBars", Model.Bars)
    @Html.TextAreaFor(m => m.Comment)
    ...
}
Run Code Online (Sandbox Code Playgroud)

_EditBars局部视图看起来是这样的:

@model List<Web.ViewModels.Bar>

@for (int i = 0; i < Model.Count; i++) {
    @Html.EditorFor(m => Model[i].Baz)
}
Run Code Online (Sandbox Code Playgroud)

我希望这个模型绑定到我的动作,看起来像:

[HttpPost]
public ActionResult Edit(Foo foo) {
    // Do stuff
} …
Run Code Online (Sandbox Code Playgroud)

.net c# asp.net-mvc model-binding asp.net-mvc-4

5
推荐指数
1
解决办法
2737
查看次数

ModelBinding:MVC4/C中的POST数据(可能来自Ruby)#

我们正在与chargify http://www.chargify.com集成,我需要在我们的MVC4/C#服务器中处理来自Chargify的webhooks.Chargify以(ruby)方式发送POST数据 - 子对象在方括号中分隔,如下所示:

POST /1ffaj2f1 HTTP/1.1
X-Chargify-Webhook-Signature: 526ccfd9677668674eaa6ba5d447e93a
X-Chargify-Webhook-Id: 11238622
User-Agent: Ruby
Host: requestb.in
Content-Type: application/x-www-form-urlencoded
Content-Length: 5159
Connection: close
Accept-Encoding: gzip, deflate
Accept: */*; q=0.5, application/xml

id=11238622&event=payment_success&payload[subscription][activated_at]=2013-05-22%2001%3A25%3A20%20-0400&payload[subscription][balance_in_cents]=0&...
Run Code Online (Sandbox Code Playgroud)

问题是在.NET端,默认模型绑定器不喜欢方括号[ ],而是期望子对象以点分表示方式分隔a.b.c.d=value

我有什么选择让模型绑定器工作?我能想到以下几点:

  1. 使用委托处理程序挂钩请求,读取req主体并将[]替换为点(.).然而,这至少让人感到有点冒险
  2. 编写一个可以使用的自定义模型绑定器[]- 希望能够以某种方式委托给默认处理程序.不知道如何解决这个问题 - 但很想听到一些想法.
  3. 只需formcollection在Action中使用一个参数.处理表单集合键以基于键形成递归字典.这也意味着我必须处理整个字符串(日期,ids等等)

什么是最好的方式,我该如何去做.

c# http-post model-binding asp.net-mvc-4

5
推荐指数
1
解决办法
509
查看次数

MVC4 AllowHtml不能使用Dictionary <string,string>

我在C#MVC4项目中有这个课程:

public class SaveModel
{
    ....

    [AllowHtml]
    public string BodyHtml { get; set; }
    [AllowHtml]
    public Dictionary<string, string> AdditionalTemplate { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

一个控制器动作看起来像这样

public ActionResult SaveTemplate(SaveModel model)
{  
    ....
}
Run Code Online (Sandbox Code Playgroud)

BodyHtml工作正常,但由于某种原因,AllowHtml不能在Dictionary上工作,我收到这样的错误:

A potentially dangerous Request.Form value was detected from 
the client (additionalTemplate[0].value="<tr>..."
Run Code Online (Sandbox Code Playgroud)

有没有什么方法可以绕过它,除了通过在我的操作上放置[ValidateInput(false)]来禁用整个请求的验证?

[ValidateInput(false)]
public ActionResult SaveTemplate(SaveModel model)
{  
    ....
}
Run Code Online (Sandbox Code Playgroud)

c# model-binding asp.net-mvc-4

5
推荐指数
1
解决办法
514
查看次数

BindAttribute,排除复杂类型的嵌套属性

如何BindAttribute在控制器中包含或排除嵌套属性?

我有一个'Stream'模型:

public class Stream
{
    public int ID { get; set; }

    [Required]
    [StringLength(50, ErrorMessage = "Stream name cannot be longer than 50 characters.")]
    public string Name { get; set; }

    [Required]
    [DataType(DataType.Url)]
    public string URL { get; set; }

    [Required]
    [Display(Name="Service")]
    public int ServiceID { get; set; }

    public virtual Service Service { get; set; }
    public virtual ICollection<Event> Events { get; set; }
    public virtual ICollection<Monitor> Monitors { get; set; }
    public virtual ICollection<AlertRule> AlertRules { get; …
Run Code Online (Sandbox Code Playgroud)

c# model-binding asp.net-mvc-4

5
推荐指数
1
解决办法
1478
查看次数

使用<select multiple>对Form :: model绑定Laravel

我刚刚解除了Form::model存在的约束力,我很高兴(这太棒了).我每次使用文本,电子邮件,甚至选择它都会尝试它.

我的问题是,它能用于<select multiple>吗?如果是这样,我该如何使用它以及在数据库中保存数组的正确方法是什么?(这可能很糟糕,但我将数组的所有选项与分隔符连接起来并将其保存为文本,我确定这不是正确的方法).

php select model-binding laravel laravel-4

5
推荐指数
1
解决办法
2111
查看次数