【问题标题】:Using input tag helper in asp.net core - the "value" is empty在 asp.net 核心中使用输入标签助手 - “值”为空
【发布时间】: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 并返回 RedirecToActionen.wikipedia.org/wiki/Post/Redirect/Get
  • 感谢您的建议 mxmissile :) 第一篇文章来自模态对话框,第二篇返回第二个向导页面。重新发布没有问题。
  • 对不起@mxmissile - 我必须道歉。您为我的问题提供了解决方案 - 但我仍然无法抓住重点......这种模式是否如此深入地涉及 asp.net mvc,所以如果不使用这种模式,这根本行不通吗?这是在基于网络框架的 mvc 之前工作的......
  • 我添加了一个答案。

标签: asp.net-core viewmodel tag-helpers asp.net-core-tag-helpers


【解决方案1】:

你是对的,这是框架中的设计选择。您可以在this blog post 中了解它的制作原因、一些理论以及一些变通方法。

例如,在您的 Post 操作中调用 ModelState.Clear(); 将显示您正在寻找的行为。

但是,无论如何,使用Post Redirect Pattern 的标准“做法”解决了问题。

【讨论】:

  • 感谢您的宝贵时间,陛下!对此,我真的非常感激!帮了很多忙!现在我真的明白发生了什么以及为什么。现在我想知道为什么 MS 网站上关于标签助手的文件没有澄清这一点......还是找不到它的人? :(
猜你喜欢
  • 1970-01-01
  • 2020-05-16
  • 2023-04-03
  • 2018-06-11
  • 2019-11-13
  • 2019-02-17
  • 2017-08-23
  • 2019-09-10
  • 2019-05-22
相关资源
最近更新 更多