Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在HttpPost上获取动态创建的textbox的值_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 3_C# 4.0 - Fatal编程技术网

C# 如何在HttpPost上获取动态创建的textbox的值

C# 如何在HttpPost上获取动态创建的textbox的值,c#,asp.net,asp.net-mvc,asp.net-mvc-3,c#-4.0,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 3,C# 4.0,我正在动态创建Textbox控件,如下所示,但在HttpPost上,它不会返回任何内容。我希望可以在HttpPost上的控制器中访问textbox的值。谁能告诉我如何才能做到这一点。谢谢 型号 public class MyViewModel { public ControlViewModel[] Controls { get; set; } } public abstract class ControlViewModel { public abstract string Ty

我正在动态创建
Textbox
控件,如下所示,但在
HttpPost
上,它不会返回任何内容。我希望可以在
HttpPost
上的控制器中访问textbox的值。谁能告诉我如何才能做到这一点。谢谢

型号

public class MyViewModel
{
    public ControlViewModel[] Controls { get; set; }
}

public abstract class ControlViewModel
{
    public abstract string Type { get; }
    public bool Visible { get; set; }
    public string Label { get; set; }
    public string Name { get; set; }
}

public class TextBoxViewModel : ControlViewModel
{
    public override string Type
    {
        get { return "textbox"; }
    }
    public string Value { get; set; }
}
控制器

public ActionResult Index(Guid? id)
{
    return Results(id);
}

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    // Logic here
}
查看

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPages/Site.master"
 Inherits="System.Web.Mvc.ViewPage<MySite.Model.ViewModels.MyViewModel>" %>

<div>
    <% using (Html.BeginForm("Index", "MyController", FormMethod.Post, null))
    { %>
        <% for (int i = 0; i < Model.Controls.Length; i++)
           { %>
               <%Html.RenderPartial("TextboxControl", (TextBoxViewModel)Model.Controls[i]); %>             
        <% } %>
        <input type="submit" value="Submit" class="btn btn-primary"/>       
    <% } %>
   </div>

用户控制

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<MySite.Model.ViewModels.TextBoxViewModel>" %>
<div>
     <%
           var controlType = Model.Type;
           var controlName = Model.Name;               
     %>
     <%= Html.TextBoxFor(x => x.Value, new { id = controlName, type = controlType, @class = "input-medium" })%>
</div>

x、 值,新的{id=controlName,type=controlType,@class=“input medium”})%>

我认为您应该使用FindControl()


查看一下

您使用重复的
名称
(和无效的
id
属性)创建的控件。动态添加对象和对象的一些选项。但在任何情况下,post参数都只会初始化
ControlViewModel
的集合,而不会初始化
TextBoxViewModel
所以
Html.TextBoxFor(x=>x.Value)
将ignored@StephenMuecke谢谢你能提供一个例子吗?我在之前的评论中给了你两个链接,这是MVC。控制器不知道有关页控件的信息。