【发布时间】:2021-11-27 19:14:54
【问题描述】:
我是 .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">
据说输入元素的标签助手会渲染所有必要的标签,包括值标签。几个例子(在互联网上)显示渲染的 html 包含
<input name="Url" id="Url" value="https://myshop.com/item?id=1234" ... />
<input name="SellerName" id="SellerName" value="" ... />
这背后一定有原因——但我无法理解。有人可以给我一些想法,为什么 url 包含发布的数据而不是新的数据,以及为什么当我填写这些属性时卖家名称值为空?我之前尝试将值放入 ViewBag 和 ViewData - 但它们都不起作用:
...
this.ViewData["SellerName"] = model.SellerName;
return PartialView("myView", model);
我对标签助手的要求太多了吗?他们不能使用当前值吗?那么发布的价值是从哪里来的呢?
为这个愚蠢的问题道歉:(非常欢迎任何可以帮助我摆脱现在深陷绝望沼泽的建议:(
【问题讨论】:
-
不要只返回
View(),而是遵循 Post Redirect Pattern 并返回RedirecToAction。 en.wikipedia.org/wiki/Post/Redirect/Get -
感谢您的建议 mxmissile :) 第一篇文章来自模态对话框,第二篇返回第二个向导页面。重新发布没有问题。
-
对不起@mxmissile - 我必须道歉。您为我的问题提供了解决方案 - 但我仍然无法抓住重点......这种模式是否如此深入地涉及 asp.net mvc,所以如果不使用这种模式,这根本行不通吗?这是在基于网络框架的 mvc 之前工作的......
-
我添加了一个答案。
标签: asp.net-core viewmodel tag-helpers asp.net-core-tag-helpers