一般来说,我将使用下面的代码来绑定客户模型,
[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)
所以,我怎么能实现这一点,是否可能?
非常感谢任何建议
我创建了一个 ViewModel 对象,它有一个包含价格的小数字段。当我将其发布到我的控制器时,会发生以下情况:
我该如何解决?我希望“15.00”是一个正确的值,但我不知道如何做到这一点。我尝试了在互联网上找到的几个自定义模型绑定器,但它们不起作用。
我有一个名为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) 我想将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) 我正在寻找一种方法(如果有的话)在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) 我的视图模型中有一个可以为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.
我怎样才能实现这个最初未被选中的状态?
是否可以将模型(服务器端)映射到 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)
谢谢!
我的控制器中有一个创建操作。获取版本初始化绑定到如下视图中的表单的模型。
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) 我知道如何绑定属性,但是如何绑定函数的调用呢?
例如:我有一个ObjectProperty指向文件的。现在,我想将路径绑定到其文件夹?如果值ObjectProperty是C:\\user\Desktop\text.txt,接合应指向C:\\user\Desktop。
我以为我可以getParentFile()在绑定内调用。
我正在开发一个 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}\nRun Code Online (Sandbox Code Playgroud)\n因此,我们决定用中性的内容更改“errors/$.flags”属性的消息,例如“输入数据不正确”。
\n我通过提供自定义JsonConverter< int >属性类来解决这个特殊情况,并且它可以很好地装饰适当的模型属性。另一个类似的问题是空集合元素导致此类响应,我通过为输入端点参数上的复杂类提供自定义模型绑定器(IModelBinder接口的实现)来修复。
\n该项目有很多端点和输入模型类,因此提供自定义 JsonConverters 或模型绑定器看起来无效且不面向未来,因为每个新端点的输入都需要配备某种解决方案。所以这里的问题是 \xe2\x80\x94 是否可能有某种全局错误处理程序来覆盖模型绑定器错误?中间件中的标准 aspnet core 错误处理程序无法处理模型绑定器错误,因为它们在实际调用操作之前发生在操作调用逻辑中。
\n或者可能有一种方法可以配置System.Text.Json功能,为绑定错误时抛出的各种JsonException提供自定义错误消息?
\nmodel-binding ×10
asp.net-mvc ×6
c# ×4
asp.net ×3
ajax ×1
asp.net-core ×1
html-helper ×1
javafx ×1
javascript ×1
jquery ×1
model ×1
post ×1
razor ×1