gpt4 book ai didi

asp.net-mvc-3 - 在 asp.net mvc 3 中预填充 Html.TextBoxFor

转载 作者:行者123 更新时间:2023-12-04 13:14:40 26 4
gpt4 key购买 nike

我是新手,如果这不够解释,请见谅。我想在 asp.net mvc 3 中的表单中预填充一个字段。

@Html.TextBox("CompName", null, new { @value = ViewBag.CompName })

但是当我想用一个值预填充它并将该值发送到我的模型时,就像这样;
 @Html.TextBoxFor(model => model.Comps.CompName, null, new { @value = ViewBag.CompName })

它不会工作。有任何想法吗?

提前致谢!

最佳答案

因此,我建议改用 View 模型而不是 ViewBag。我在我的项目中创建了一个名为 ViewModels 的文件夹,然后在那里创建了一些适当的子文件夹,用于放置我的各种 View 模型。

如果您像这样创建一个 View 模型类:

public class MyViewModel
{
public string CompName { get; set; }
}

然后在您的 Controller 操作中,您可以创建其中一个并填充它,可能来自从数据库中提取的某些现有模型。通过设置 CompName viewmodel 中的属性,它将在您的 View 中具有该值。然后你的 View 看起来像这样:
@model MyNamespace.ViewModels.MyViewModel

@Html.EditorFor(model => model.CompName)

@Html.TextBoxFor也会工作。

然后回到你对帖子的 Controller 操作,你有这样的东西:
[HttpPost]
public ActionResult MyAction(MyViewModel viewModel)
{
...
// do whatever you want with viewModel.CompName here, like persist it back
// to the DB
...
}

可能是您使用 automapper 之类的东西来映射您的模型和 View 模型,但您当然也可以手动完成,尽管整个左手/右手的事情变得非常乏味。

如果你这样做,事情就会变得容易得多,而且根本没有多少工作。

更新

但是,如果您真的想在 ViewBag 中传递该值,您可以这样做:

在您的 Controller 操作中:
ViewBag.CompName = "Some Name";

那么在你看来:
@Html.TextBoxFor(model =>model.Comps.CompName, new {@Value = ViewBag.CompName})

这将使用“Some Name”预先填充文本框。

我仍然会使用 viewmodel 方法,但这似乎工作得很好。希望有帮助!

关于asp.net-mvc-3 - 在 asp.net mvc 3 中预填充 Html.TextBoxFor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7337520/

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