获取<%= @ Html.DropDownList%>的异常{“类型'Button'的控件'Button1'必须放在带有runat = server的表单标签内。”}

时间:2014-06-18 17:41:15

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

该项目位于.Net Framnework 3.5上,并拥有MVC框架1.0 ViewModel是:

namespace MockBDPWorkflowTestApp.ViewModels


{
    public class WorkFlowTestViewModel
   {
    public string processInstance { get; set; }
    public string mail { get; set; }
    public String[,] productCode = { { "GL", "0" }, { "PROP", "1" }, 
                       { "Auto", "2" }, { "Other", "3"},
                       { "Multi", "4" } };

    public List<SelectListItem> products;
    }
}

控制器是:

 public class WorkFlowTestController : Controller
{
    //
    // GET: /WorkFlowTest/

    public ActionResult OpenSubmission(string processId, string mailId)
    {
        var SubmissionModelView = new MockBDPWorkflowTestApp.ViewModels.WorkFlowTestViewModel{processInstance =processId,  mail =mailId} ;
        SubmissionModelView.products = new List<SelectListItem>();
        SubmissionModelView.products.Add(new SelectListItem { Text = "GL", Value = "0", Selected = true });
        SubmissionModelView.products.Add(new SelectListItem { Text = "Property", Value = "1" });
        SubmissionModelView.products.Add(new SelectListItem { Text = "Package", Value = "2" });
        SubmissionModelView.products.Add(new SelectListItem { Text = "Island Marine", Value = "3" });
        return View("Submission", SubmissionModelView);

    }

}

观点是:

<%@ Page Language="C#"     Inherits="System.Web.Mvc.ViewPage<MockBDPWorkflowTestApp.ViewModels.WorkFlowTestViewModel>" %>
  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

 <head id="Head1" runat="server">

<title>Submission</title>

 </head>

<body>

  <div>

    <% using (Html.BeginForm())
      {
        %>
        <div>
            <table >
             <tr>
              <td>
               <div id="SID">
                   <table id="tblID" cellpadding ="0" cellspacing ="0" border="1">
                    <tr>
                        <td width ="50%"> <label for="Process Inastance Id"> Process Inastance Id: </label> &nbsp;&nbsp; <%=@Html.TextBox("pInstance",@Model.processInstance) %></td>
                        <td width ="50%"> <label for ="Mail Id">Mail Id: </label> &nbsp;&nbsp; <%=@Html.TextBox("mail",@Model.mail) %> </td>
                    </tr>
                </table>
            </div>
            <br /><br />
            <table id="tblDet" cellpadding ="0" cellspacing ="0" >
                <tr>
                    <td width="50%"> <label for="Submission Number"> Submission Number: </label> &nbsp;&nbsp; <%=@Html.TextBox("sNo") %></td>
                    <td width ="50%"> <label for ="Name Insured">Name Insured: </label> &nbsp;&nbsp; <%=@Html.TextBox("nameInsured") %> </td>
                </tr>
                <tr>
                    <td width="50%"> <label for="Broker Code"> Broker Code: </label> &nbsp;&nbsp; <%=@Html.TextBox("brokerCode") %></td>
                    <td width ="50%"> <label for ="Broker Name">Broker Name: </label> &nbsp;&nbsp; <%=@Html.TextBox("brokerName") %> </td>
                </tr>
                 <tr>
                    <td width="50%"> <label for="Product Code"> Product Code: </label> &nbsp;&nbsp; <%=@Html.DropDownList("prodlist",@Model.products)%></td>
                    <td width ="50%"> <asp:Button ID="Button1" runat ="server"  Text ="Add Product" /> </td>
                </tr>
            </table>
         </td>
        </tr>
       </table>
    </div>

<% } %>
</div>

在视图中我找到了HTMLhelper下拉列表,但在运行时它给出了一个异常&lt;%= @ Html.DropDownList%&gt; {&#34; Control&#39; Button1&#39;类型&#39;按钮&#39;必须放在带有runat = server的表单标记内。&#34;}

在MVC Framework 1.0中,执行列表项下拉框的最佳方法是什么。

1 个答案:

答案 0 :(得分:0)

将您的<asp:Button ID="Button1" runat="server" />替换为纯HTML <button><input type="submit" />元素。