gpt4 book ai didi

jquery - ASP.NET MVC : How to 'model bind' a non html-helper element

转载 作者:行者123 更新时间:2023-12-03 22:06:34 25 4
gpt4 key购买 nike

您能告诉我一种将 model 属性绑定(bind)到不使用 html 助手创建的 html 元素的方法吗?

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

最佳答案

如果您指的是Model Binding ,它不需要助手,但需要命名约定。助手只是让创建 HTML 标记变得简单而简洁。

您可以创建纯 HTML 输入并正确设置 name 属性。默认的命名约定只是基于点,省略了父级实体的名称,但从那里对其进行限定。

考虑这个 Controller :

public class MyControllerController : Controller
{
public ActionResult Submit()
{
return View(new MyViewModel());
}

[HttpPost]
public ActionResult Submit(MyViewModel model)
{
// model should be not null, with properties properly initialized from form values
return View(model);
}
}

这个模型:

public class MyNestedViewModel
{
public string AnotherProperty { get; set; }
}

public class MyViewModel
{
public MyViewModel()
{
Nested = new MyNestedViewModel();
}

public string SomeProperty { get; set; }

public MyNestedViewModel Nested { get; set; }
}

您可以纯粹用 HTML 创建以下表单:

<form method="POST" action="MyController/Submit">
<div><label>Some property</label><input type="text" name="SomeProperty" /></div>
<div><label>Another property</label><input type="text" name="Nested.AnotherProperty" /></div>
<button type="submit">Submit</button>
</form>

如果您想显示发布的值(在第二个 Submit 重载中),则必须修改您的 HTML 以呈现模型属性。您可以将其放置在 View 中,在本例中使用 Razor 语法并调用 Submit.cshtml:

@model MyViewModel
<form method="POST" action="MyController/Submit">
<div><label>Some property</label><input type="text" name="SomeProperty" value="@Model.SomeProperty" /></div>
<div><label>Another property</label><input type="text" name="Nested.AnotherProperty" value="@Model.Nested.SomeProperty" /></div>
<button type="submit">Submit</button>
</form>

因此,这可以在没有助手的情况下完成,但您希望尽可能多地使用它们。

关于jquery - ASP.NET MVC : How to 'model bind' a non html-helper element,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14353245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com