gpt4 book ai didi

c# - 不同 View 中的相同字段名称无法正确呈现

转载 作者:太空宇宙 更新时间:2023-11-03 14:04:39 26 4
gpt4 key购买 nike

我是 MVC 3 的新手,我有以下观点:

索引:

@using (Html.BeginForm())
{
@Html.Hidden("id", "1")
<input type="submit" value="Submit" />
}

主要内容:

@using (Html.BeginForm())
{
@Html.Hidden("id", "2")
<input type="submit" value="Save" />
}

以及以下 Controller :

public ActionResult Index()
{
ViewBag.Message = "Welcome!";
return View();
}
[HttpPost]
public ActionResult Index(string id)
{
if ("1".Equals(id))
{
return View("Main");
}
else("2".Equals(id))
{
return View();
}
}

我的期望是主视图将呈现值为“2”的隐藏输入。但是,在到达主页并检查源代码后,该值仍设置为“1”。知道我在这里做错了什么吗?

最佳答案

这取决于您使用的 URL。如果您输入 ..../Index,那么它会转到 Index View ,但是如果您要输入 .../Index/1,那么它会转到主视图并渲染你的两个(这有点奇怪,因为 1 转到 2 :))

此外,您只会在 POST 上点击 Index(string id) 方法,所以这也可能是您的问题。一个典型的 URL 请求以 GET

的形式出现

如果这没有帮助,那么您可能需要提供更多详细信息(您尝试访问的 URL 以及您尝试到达那里的方式)

自己尝试后更新

我明白你在说什么。隐藏字段被设置为 1 的原因是因为 ModelState 为您插入了它。据我所知,这不应该发生,因为您正在明确设置该值。但是,似乎如果有匹配的状态项,它就会使用它。您可以通过从使用 id 更改为 Main 的隐藏输入名称中的任何其他内容来测试这一点。

Here is the documentation .在评论中,它确实声明这更多地用于模型绑定(bind),但我认为插入的值会覆盖其他任何内容。

最终更新

原来这个其实已经提给了合适的人,而且是设计好的。不过,他们应该更改文档以使其更加明确。 Here is the SO question that answers this

关于c# - 不同 View 中的相同字段名称无法正确呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740535/

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