使用ViewBag生成表单

时间:2013-10-29 19:18:09

标签: c# asp.net-mvc forms viewbag

我正在生成一个像这样的表单列表

foreach (projects p in projects)
                {
                    ViewBag.ProjectList += @"<div class='itemdiv memberdiv'>

                                                      @Using(Html.BeginForm()) {

并使用@html.raw传递给html(ViewBag.ProjectList) 但问题是@using是作为一个字符串传递的,我不能在它之外做 控制器Viewbag字符串,因为它无法识别来自控制器的@using。

如何从控制器中生成这样的提交表单列表?

3 个答案:

答案 0 :(得分:1)

由于您没有向表单添加任何其他属性,因此您可以写出html表单标记,而不是将其包装在后端代码中。

foreach (projects p in projects)
{
    ViewBag.ProjectList += @"<div class='itemdiv memberdiv'>
                                 <form method='POST'>...</form>

答案 1 :(得分:0)

您必须直接构建表单标记。您不能使用MVC Html助手,因为这是必须执行的c#代码。

答案 2 :(得分:0)

我不会使用viewbag,我会使用模型。然后循环遍历模型中的每个项目。由于您在页面上放置了多个表单,因此您需要为每个表单指定一个操作,否则您的提交按钮将全部转到相同的操作。

模型

public class Projects
{
  public string Action {get; set;}
  public string Controller {get; set;}
  public string FormStuff {get; set;}
}  

查看

 @model Projects

    @foreach (projects p in Model)
    {
      <div class='itemdiv memberdiv'>
        @Using(Html.BeginForm(p.Action, p.Controller))
        {
          @p.FormStuff
        }
      </div>
    }