标签: model-binding

明确绑定模型

一般来说,我将使用下面的代码来绑定客户模型,

[HttpPost]
public ActionResult Create(Customer model)
{
  ...
}
Run Code Online (Sandbox Code Playgroud)

现在,我想稍后提高绑定,而不是立即提高绑定

[HttpPost]
public ActionResult Create()
{
  //some operations first
  ...
  //binding will start here 
  var model={Bind - To - Customer}
  ...
}
Run Code Online (Sandbox Code Playgroud)

所以,我怎么能实现这一点,是否可能?

非常感谢任何建议

c# asp.net-mvc model-binding

3
推荐指数
1
解决办法
594
查看次数

ASP.NET MVC ViewModel 使用浮点数时绑定十进制为空

我创建了一个 ViewModel 对象,它有一个包含价格的小数字段。当我将其发布到我的控制器时,会发生以下情况:

  • 输入“15”-> 好的!控制器收到 15。
  • 输入“15.00”-> 不行!控制器收到一个“空”字段。
  • 输入“15,00”-> 验证错误,因为该字段应使用句点进行格式化(我暂时只使用一种格式类型以避免复杂性)。
  • 输入“15.00M”-> 验证错误,可能是因为它不被视为数字。

我该如何解决?我希望“15.00”是一个正确的值,但我不知道如何做到这一点。我尝试了在互联网上找到的几个自定义模型绑定器,但它们不起作用。

c# model-view-controller asp.net-mvc model-binding

3
推荐指数
1
解决办法
2472
查看次数

MVC嵌套模型绑定只能部分工作 - 我缺少什么?

我有一个名为AssetSearchModel的ViewModel,其属性类型为:List.

当我从ViewModel发布时,我的List的所有属性都成功绑定回模型,除了这个:public DomainsDto DomainControl { get; set; }在底部定义.

那个domaincontrol有几个属性,然后是它自己的嵌套列表......它的所有属性都没有设置,它们都是null

public class AssetSearchModel
{
    public List<SearchControlModel> SearchControls { get; set; }

    public AssetSearchModel()
    {
    }

}

public class SearchControlModel
{

    /// <summary>
    /// Asset identifier.
    /// </summary>
    [DisplayName("AssetId ID")]
    public int SearchOptionID { get; set; } // this gets bound ok

    [DisplayName("Asset Customer ID")]
    public int AssetCustomerID { get; set; } // this gets bound ok

    [DisplayName("Portal ID")]
    public int PortalID { get; set; } // this gets bound …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-mvc model-binding

3
推荐指数
1
解决办法
2542
查看次数

嵌套模型不绑定

我想将JSON数据结构传递给MVC(3)控制器,将JSON对象转换为C#对象,并绑定所有属性.其中一个属性是简单类型.这是基本的模型绑定,对吧?

这是我的模特:

public class Person
{
    public string Name { get; set; }
    public JobTitle JobTitle { get; set; }
}

public class JobTitle
{
    public string Title { get; set; }
    public bool IsSenior { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

这是我的Index.cshtml页面(它发出一个AJAX请求,传入一个匹配"Person"类结构的JSON对象):

<div id="myDiv" style="border:1px solid #F00"></div>
<script type="text/javascript">
var person = { 
        Name: "Bob Smith",
        JobTitle: { 
            Title: "Developer",
            IsSenior: true
        } 
    };

$.ajax({
    url: "@Url.Action("ShowPerson", "Home")",
    data: $.param(person),
    success: function (response){
        $("#myDiv").html(response);
    },
    error: function (xhr) {
        $("#myDiv").html("<h1>FAIL</h1><p>" + …
Run Code Online (Sandbox Code Playgroud)

ajax model-binding asp.net-mvc-3

3
推荐指数
1
解决办法
1169
查看次数

用post方法绑定Asp mvc 4模型

我正在寻找一种方法(如果有的话)在post方法上使模型绑定过程与List对象一起使用.我可以轻松显示列表.但是当用户使用post方法上传"Bien"时,我无法使框架正确绑定每个列表元素.你可以看到我尝试制作标签和文本框的页面部分,因为我不断得到异常,所以我想我做错了,我无法找到一种方法在我的模型上传可变数量的参数.

这是模型:

 public class BienModel
    {

        [Required]
        [Display(Name = "Nombre del Bien.")]
        public String Nombre { set; get; }


        public List<Atributo> Atributos { set; get; }


    }

    public class Atributo
    {
        [Required]
        public String nombre { set; get; }

        [Required]
        public String valor { set; get; }
        public Atributo(){}
        public Atributo(String n, String v){
            this.nombre=n;
            this.valor=v;
        }


    }
Run Code Online (Sandbox Code Playgroud)

这是页面:

@using (Html.BeginForm()) {


    <fieldset>
        <legend>Publicar bien form.</legend>
        <ol>
            <li>
                @Html.LabelFor(m => m.Nombre)
                @Html.TextBoxFor(m => m.Nombre)
                @Html.ValidationMessageFor(m => m.Nombre)
            </li>
            @*@for (int …
Run Code Online (Sandbox Code Playgroud)

asp.net-mvc post model model-binding

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

如何在ASP.NET MVC中创建一个模型绑定的是/否单选按钮,该按钮在页面加载时未选择任何选项?

我的视图模型中有一个可以为null的布尔属性:

public class ViewModel
{
    [Required(ErrorMessage="Please select yes or no")]
    public bool? Completed { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我希望此属性的表单控件是一对单选按钮,在页面加载时最初没有选择任何选项.这是因为我们希望用户有意识地单击一个选项或另一个选项(而不是复选框,这很容易被忽略并保留为默认值).

布尔属性需要是可空的,因为否则在页面加载时已经检查了'NO'选项,正如我上面提到的那样,这不是我们想要的.但是,在视图中使用以下代码:

<label>@Html.RadioButton("Completed", Model.Completed) YES</label>
<label>@Html.RadioButton("Completed", !Model.Completed) NO</label>
Run Code Online (Sandbox Code Playgroud)

导致运行时错误,因为帮助程序尝试绑定到的模型属性为null.

我怎样才能实现这个最初未被选中的状态?

asp.net html-helper model-binding razor asp.net-mvc-3

3
推荐指数
1
解决办法
5390
查看次数

将 ViewModel 映射到 JS 对象

是否可以将模型(服务器端)映射到 JS 对象?问题是我无法从服务器端返回 json 对象。

查看.cshtml:

@model TestModel

<script type="text/javascript">
    jQuery(function ($) {
        var jsObject = {
            Property1: @Model.Property1,
            Property2: @Model.Property2,
            Property3: @Model.Property3,
            ...
        };
    });
</script>
Run Code Online (Sandbox Code Playgroud)

谢谢!

javascript asp.net asp.net-mvc jquery model-binding

3
推荐指数
1
解决办法
1989
查看次数

ASP.Net MVC 5 将 Form Post 中的初始模型参数传递给控制器

我的控制器中有一个创建操作。获取版本初始化绑定到如下视图中的表单的模型。

public ActionResult Create(int someId)
    {
        AppDbContext = new ApplicationDbContext();
        ItemViewModel model = new ItemViewModel()
        {
            SomeId = someId
        };
        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

和 post 方法为

    [HttpPost]
    public async Task<ActionResult> Create(int someId, ItemViewModel model)
    {
        //Some Code Here
        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

问题是我收到一个错误:

参数字典包含非空类型“System.Int32”的参数“someId”的空条目,用于方法“System.Threading.Tasks.Task`1[System.Web.Mvc.ActionResult] Create(Int32, SomeSystem.ViewModels .Admin.Some.SomeViewModel)' 中的“SomeSystem.Controllers.SomeController”。可选参数必须是引用类型、可为空类型或声明为可选参数。参数名称:参数

虽然我发帖前的网址看起来像:

 SomeController/Create?someId=14
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

    [HttpPost]
    public async Task<ActionResult> Create(ItemViewModel model)
    {
        var myvar = model.SomeId; //SomeId is Null.
        //Some Code Here
        return View(model);
    }
Run Code Online (Sandbox Code Playgroud)

我假设,我在 Create Action 的 Get 方法中初始化的值应该在帖子中可用;但他们不是。

编辑:我的视图只是一个表格:

@model AuctionSystem.ViewModels.Admin.Item.ItemViewModel
@using …
Run Code Online (Sandbox Code Playgroud)

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

3
推荐指数
1
解决办法
3377
查看次数

如何调用绑定属性的方法

我知道如何绑定属性,但是如何绑定函数的调用呢?

例如:我有一个ObjectProperty指向文件的。现在,我想将路径绑定到其文件夹?如果值ObjectPropertyC:\\user\Desktop\text.txt,接合应指向C:\\user\Desktop

我以为我可以getParentFile()在绑定内调用。

javafx model-binding

3
推荐指数
1
解决办法
980
查看次数

全局错误处理程序,包括 Model Binder 错误

我正在开发一个 AspNet Core 3.1 web-api 项目,该项目正在由 PenTest 机构进行测试,当不正确的输入数据导致包含有关项目代码内部信息的响应时,他们会标记情况,如下所示:

\n
{\n  "type": "https://tools.ietf.org/html/rfc7231#section-6.5.1",\n  "title": "One or more validation errors occurred.",\n  "status": 400,\n  "traceId": "00-371d845d720a4f4c8ad3d618e4386125-7086a0b4fb30614c-00",\n  "errors": {\n    "$.flags": [\n      "The JSON value could not be converted to System.Int32. Path: $.flags | LineNumber: 0 | BytePositionInLine: 47."\n    ]\n  }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

因此,我们决定用中性的内容更改“errors/$.flags”属性的消息,例如“输入数据不正确”。

\n

我通过提供自定义JsonConverter< int >属性类来解决这个特殊情况,并且它可以很好地装饰适当的模型属性。另一个类似的问题是空集合元素导致此类响应,我通过为输入端点参数上的复杂类提供自定义模型绑定器(IModelBinder接口的实现)来修复。

\n

该项目有很多端点和输入模型类,因此提供自定义 JsonConverters 或模型绑定器看起来无效且不面向未来,因为每个新端点的输入都需要配备某种解决方案。所以这里的问题是 \xe2\x80\x94 是否可能有某种全局错误处理程序来覆盖模型绑定器错误?中间件中的标准 aspnet core 错误处理程序无法处理模型绑定器错误,因为它们在实际调用操作之前发生在操作调用逻辑中。

\n

或者可能有一种方法可以配置System.Text.Json功能,为绑定错误时抛出的各种JsonException提供自定义错误消息?

\n

error-handling model-binding asp.net-core jsonconverter

3
推荐指数
1
解决办法
1151
查看次数