标签: model-binding

ASP.NET MVC3 JSON与嵌套类的模型绑定

在MVC3中,如果模型具有嵌套对象,是否可以自动将javascript对象绑定到模型?我的模型看起来像这样:

 public class Tweet
 {
    public Tweet()
    {
         Coordinates = new Geo();
    }
    public string Id { get; set; }
    public string User { get; set; }
    public DateTime Created { get; set; }
    public string Text { get; set; }
    public Geo Coordinates { get; set; } 

}

public class Geo {

    public Geo(){}

    public Geo(double? lat, double? lng)
    {
        this.Latitude = lat;
        this.Longitude = lng;
    }

    public double? Latitude { get; set; }
    public double? Longitude { get; …
Run Code Online (Sandbox Code Playgroud)

asp.net json model-binding asp.net-mvc-3

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

ASP.NET MVC 4 JSON绑定到视图模型 - 嵌套对象错误

我遇到了json绑定到视图模型的问题.这是我的代码:

我的ViewModel的一部分(AddressViewModel有更多属性):

public class AddressViewModel
{
        [Display(Name = "Address_Town", ResourceType = typeof(Resources.PartyDetails))]
        public string Town { get; set; }

        [Display(Name = "Address_Country", ResourceType = typeof(Resources.PartyDetails))]
        public Country Country { get; set; }
}

public class Country : EntityBase<string>
{
        public string Name { get; set; }

        protected override void Validate()
        {
            if (string.IsNullOrEmpty(Name))
            {
                base.AddBrokenRule(new BusinessRule("CountryName", "Required"));
            }
        }
}
Run Code Online (Sandbox Code Playgroud)

使用Javascript:

$(document).on("click", "#addAddress", function () {
            var jsonData = {
                "Town": $('#txt-Town').val(),
                "District": $('#txt-District').val(),
                "Street": $('#txt-Street').val(),
                "PostCode": $('#txt-PostCode').val(),
                "FlatNumber": $('#txt-FlatNumber').val(), …
Run Code Online (Sandbox Code Playgroud)

json model-binding asp.net-mvc-4

14
推荐指数
2
解决办法
4万
查看次数

默认模型Binder不绑定IEnumerable中的Nullable类型

我有一个控制器动作,其定义如下 -

public ActionResult ChangeModel( IEnumerable<MyModel> info, long? destinationId)
Run Code Online (Sandbox Code Playgroud)

而型号:

public class MyModel
{
    public string Name; //Gets populated by default binder
    public long? SourceId; //remains null though the value is set when invoked
}
Run Code Online (Sandbox Code Playgroud)

"名称"属性,都会在控制器动作人口不过的sourceID财产保持为空.该目标-ID这是一个很长?参数也会被填充.

在单步执行MVC(版本2)源代码时,这是DefaultModelBinder抛出的异常.

从类型'System.Int32'到类型'System.Nullable`1 [[System.Int64,mscorlib,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089]]的参数转换失败,因为没有类型转换器可以转换这些类型.

如果模型更改为long而不是long?,则默认模型绑定器会设置该值.

public class MyModel
{
    public string Name {get;set;}; //Gets populated by default binder
    public long SourceId {get;set;}; //No longer long?, so value gets set
}
Run Code Online (Sandbox Code Playgroud)

这是一个已知的问题?由于MVC源代码已经过优化,我无法单步执行大部分代码. …

c# asp.net-mvc defaultmodelbinder model-binding asp.net-mvc-2

13
推荐指数
1
解决办法
3066
查看次数

ASP.Net Web Api在POST上没有绑定模型

我正在尝试将JSON数据发布到Web Api方法,但JSON数据未绑定到模型.

这是我的模特:

[DataContract]
public class RegisterDataModel
{
    [DataMember(IsRequired = true)]
    public String SiteKey { get; set; }

    [DataMember(IsRequired = true)]
    public String UserId { get; set; }

    [DataMember(IsRequired = true)]
    public String UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的Web Api动作:

    public class RegisterController : ApiController
    {
    public Guid Post([ModelBinder] RegisterDataModel registerDataModel)
    {
        if (!ModelState.IsValid)
        {
            throw new ModelStateApiException(ModelState);
        }
        var userProfileDataContract = userProfileBusinessLibrary.GetNewOne();
        userProfileDataContract.UserId = registerDataModel.UserId;
        userProfileDataContract.UserName = registerDataModel.UserName;

        var userKey = userProfileBusinessLibrary.Register(registerDataModel.SiteKey, userProfileDataContract);

        return userKey;
    }
    }
Run Code Online (Sandbox Code Playgroud)

在我添加[ModelBinder]之前,registerDataModel为null.添加[ModelBinder]后,registerDataModel是RegisterDataModel实例,但所有属性值都为null. …

model-binding modelbinders asp.net-mvc-4 asp.net-web-api

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

ASP.NET MVC:如何'模型绑定'非html-helper元素

你能告诉我一种方法,我可以将模型属性绑定到一个html元素,不使用html帮助器创建?

换句话说,对于一个普通的html元素,例如: <input type="text" />

asp.net-mvc jquery entity-framework model-binding razor

13
推荐指数
2
解决办法
3万
查看次数

如何指定两个css类:from property和conditional class

我知道在knockout中有能力从observable属性中指定类,如下所示:

<div data-bind="css: Color " >
Run Code Online (Sandbox Code Playgroud)

Knockout还提供了指定条件类渲染的功能,如下所示:

<div data-bind="css: { 'my-class' : SomeBooleanProperty  }" >
Run Code Online (Sandbox Code Playgroud)

但是,如果我需要敲除css绑定在一起的那些功能,应该指定哪个标记?

我试过这个,但没有运气:

<div data-bind="css: { Color, 'my-class' : SomeBooleanProperty  }" >
Run Code Online (Sandbox Code Playgroud)

我有错误:

错误:无法解析绑定.SyntaxError:意外的令牌,;

我没有在谷歌或官方文档中找到任何示例.

UPDATE

我找到了一个解决方法:在代码中构建样式字符串并将其放到属性中,如下所示:

item.AdditionalCss(Color() + " " + (result.IsSortable() ? 'my-class' : null));
Run Code Online (Sandbox Code Playgroud)

并在html中指定此类:

data-bind="css: AdditionalCss "
Run Code Online (Sandbox Code Playgroud)

但我有点疑惑,我认为这是肮脏的方法.我认为在标记中获得相同的结果会更好.如何通过标记实现这一目标?

css model-binding knockout.js

13
推荐指数
1
解决办法
7982
查看次数

复选框和模型绑定的动态列表

我正在尝试创建一个视图,其中包含从数据库动态创建的复选框列表,然后在回发表单时检索所选复选框的列表.

我的EF模型包含一个类:

public class ItemIWouldLikeACheckboxFor {
    public int Id { get; set; }
    public string Description { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我有一个包含以下列表的视图模型:

public class PageViewModel {
    // various other properties
    public List<ItemIWouldLikeACheckboxFor> checkboxList { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我的控制器获取方法:

public ActionResult Create() {
    var viewModel = new PageViewModel();
    viewModel.checkboxList = db.ItemIWouldLikeACheckboxFors.ToList();
    return View(viewModel);
}
Run Code Online (Sandbox Code Playgroud)

我的看法:

<% using (Html.BeginForm()) { %>
    <%-- other stuff here... %>

    <% foreach (var item in checkboxList) { %>
        <%: Html.CheckBox( <!-- what exactly ?????? -->) …
Run Code Online (Sandbox Code Playgroud)

c# checkbox dynamic model-binding asp.net-mvc-2

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

MVC模型绑定到集合不以0索引开头的集合

我正在尝试对集合中项目的属性执行远程验证.验证在集合的第一项上正常工作.对验证方法的http请求如下所示:

/Validation/IsImeiAvailable?ImeiGadgets[0].ImeiNumber=123456789012345
Run Code Online (Sandbox Code Playgroud)

但是,在下面的url看起来像的第二个项目上,验证不起作用

/Validation/IsImeiAvailable?ImeiGadgets[1].ImeiNumber=123456789012345
Run Code Online (Sandbox Code Playgroud)

现在我很确定这个的原因,就是绑定不会对一个不以零索引开头的集合起作用.

我的验证方法有如下签名:

public JsonResult IsImeiAvailable([Bind(Prefix = "ImeiGadgets")] Models.ViewModels.ImeiGadget[] imeiGadget)
Run Code Online (Sandbox Code Playgroud)

因为我在一个集合中传递一个项目,我必须像这样绑定,但我真正传递的只是一个值.

无论如何我可以解决这个问题,而不仅仅是将它绑定为普通的旧查询字符串.

谢谢

编辑:这是获取Imei变量的快速修复,但我宁愿使用模型绑定:

string imeiNumber = Request.Url.AbsoluteUri.Substring(Request.Url.AbsoluteUri.IndexOf("=")+1);
Run Code Online (Sandbox Code Playgroud)

编辑:这是我的ImeiGadget类:

public class ImeiGadget
{
    public int Id { get; set; }

    [Remote("IsImeiAvailable", "Validation")]
    [Required(ErrorMessage = "Please provide the IMEI Number for your Phone")]
    [RegularExpression(@"(\D*\d){15,17}", ErrorMessage = "An IMEI number must contain between 15 & 17 digits")]
    public string ImeiNumber { get; set; }
    public string Make { get; set; }
    public string Model { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

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

12
推荐指数
1
解决办法
2159
查看次数

如何将JSON.NET作为ASP.NET MVC控制器的模型绑定器?

ASP.NET Web API团队已决定将JSON.NET库用于模型绑定JSON数据.但是,"普通"MVC控制器仍然使用劣质JsonDataContractSerializer.这会导致解析日期的问题,并且让我很头疼.

请参阅此参考:http:
//www.devcurry.com/2013/04/json-dates-are-different-in-aspnet-mvc.html

作者选择在客户端的Knockout层中解决问题.但我更愿意通过在MVC控制器中使用与Web API控制器中相同的JSON.NET模型绑定器来解决此问题.

如何将不同的JSON模型绑定器替换为ASP.NET MVC?具体来说,就是JSON.NET库.如果可能,使用Web API中的相同模型绑定器将是理想的.

asp.net-mvc json model-binding

12
推荐指数
1
解决办法
4981
查看次数

将选中的复选框发布到控制器操作,而不使用HTML帮助程序,如Html.CheckboxList

我有一个项目列表,我想删除复选框列表中选中的项目.

我不能使用像CheckboxListGrid.Mvc用来显示我的线条的东西.这就是我在每行中创建复选框的原因column.add("<input type="checkbox".....>);.

每个复选框都有自己的ID:

<input type="checkbox" id="3">
<input type="checkbox" id="4">...
Run Code Online (Sandbox Code Playgroud)

我想知道如何将所有选中的复选框ID传递给控制器​​(从那里我将执行删除操作).如何通过一键按下从表单中将已检查ID的数组发布到我的控制器操作?

asp.net-mvc model-binding razor

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