在 asp.net 核心中使用输入标签助手 - "value" 为空
Using input tag helper in asp.net core - the "value" is empty
我是 .net 5 asp 标签助手的新手。我有这样的模型:
public class MyForm
{
public String Url { get; set; }
...
}
public class MyViewModel
{
[Required]
public String Url { get; set; }
[DisplayName("Seller username")]
[Required]
public String SellerName { get; set; }
...
}
在我的控制器中,我得到了 URL 值,例如 https://myshop.com/item?id=1234
public IActionResult AddLinkWizardSecond(MyForm form)
{
var model = new MyViewModel() {
Url = "https://anotherShop.com/index.html",
SellerName = "test user 123",
};
return PartialView("myView", model);
}
我的观点如下:
@model MyViewModel
<input asp-for="Url" readonly>
<input asp-for="SellerName">
据说输入元素的标签助手会呈现所有必要的标签,包括值标签。几个示例(在 Internet 上)显示呈现的 html 包含
<input name="Url" id="Url" value="https://myshop.com/item?id=1234" ... />
<input name="SellerName" id="SellerName" value="" ... />
这背后一定有原因 - 但我听不懂。有人可以给我一些想法,为什么 url 包含已发布的数据而不是新数据,以及为什么在我填写这些属性时卖家名称值为空?我之前尝试将值放入 ViewBag 和 ViewData - 但其中 none 正在工作:
...
this.ViewData["SellerName"] = model.SellerName;
return PartialView("myView", model);
我对标签助手的要求是不是太多了?他们不能使用当前值?那么发布的值从何而来?
为这个愚蠢的问题道歉:(非常欢迎任何建议,它可以帮助我摆脱现在的绝望深渊:(
你是对的,这是框架中的设计选择。您可以在 this blog post.
中了解它的制作原因、一些理论以及一些解决方法
例如,在您的 Post 操作中调用 ModelState.Clear();
将显示您正在寻找的行为。
然而,它的标准“实践”使用 Post Redirect Pattern 无论如何,这解决了问题。
我是 .net 5 asp 标签助手的新手。我有这样的模型:
public class MyForm
{
public String Url { get; set; }
...
}
public class MyViewModel
{
[Required]
public String Url { get; set; }
[DisplayName("Seller username")]
[Required]
public String SellerName { get; set; }
...
}
在我的控制器中,我得到了 URL 值,例如 https://myshop.com/item?id=1234
public IActionResult AddLinkWizardSecond(MyForm form)
{
var model = new MyViewModel() {
Url = "https://anotherShop.com/index.html",
SellerName = "test user 123",
};
return PartialView("myView", model);
}
我的观点如下:
@model MyViewModel
<input asp-for="Url" readonly>
<input asp-for="SellerName">
据说输入元素的标签助手会呈现所有必要的标签,包括值标签。几个示例(在 Internet 上)显示呈现的 html 包含
<input name="Url" id="Url" value="https://myshop.com/item?id=1234" ... />
<input name="SellerName" id="SellerName" value="" ... />
这背后一定有原因 - 但我听不懂。有人可以给我一些想法,为什么 url 包含已发布的数据而不是新数据,以及为什么在我填写这些属性时卖家名称值为空?我之前尝试将值放入 ViewBag 和 ViewData - 但其中 none 正在工作:
...
this.ViewData["SellerName"] = model.SellerName;
return PartialView("myView", model);
我对标签助手的要求是不是太多了?他们不能使用当前值?那么发布的值从何而来?
为这个愚蠢的问题道歉:(非常欢迎任何建议,它可以帮助我摆脱现在的绝望深渊:(
你是对的,这是框架中的设计选择。您可以在 this blog post.
中了解它的制作原因、一些理论以及一些解决方法例如,在您的 Post 操作中调用 ModelState.Clear();
将显示您正在寻找的行为。
然而,它的标准“实践”使用 Post Redirect Pattern 无论如何,这解决了问题。