Skip to main content
 首页 » 编程设计

c#之无法将类型 'string' 隐式转换为 'System.Web.UI.WebControls.TextBox' 错误

2024年01月31日24qlqwjy

我收到此错误,但我无法确定它可能来自何处。错误页面引用的行是:

@ Page Title="" Language="C#" MasterPageFile="~/CV.Master" AutoEventWireup="true" CodeBehind="AddPost.aspx.cs" Inherits="CV_Blog_WDW.AddPost"

但我看不出该行如何导致该错误?除非我遗漏了什么?

我的 .aspx 代码是:

<%@ Page Title="" Language="C#" MasterPageFile="~/CV.Master" AutoEventWireup="true" CodeBehind="AddPost.aspx.cs" Inherits="CV_Blog_WDW.AddPost" %> 
    <asp:Content ID="Content1" 
                 ContentPlaceHolderID="ContentPlaceHolder1" 
                 runat="server"> 
        <!-- ========= 
        Special Nav for BLog page 
        ===================================--> 
        <nav class="nav-blog"> 
            <a href="default.aspx" 
               class="btn btn-left" 
               data-toggle="tooltip" 
               data-placement="left" 
               title="" 
               data-original-title="Home"> 
                <i class="fa fa-home"></i> 
            </a> 
            <a href="#" 
               class="btn btn-big-blog">Blog</a> 
            <a href="#" 
               class="btn btn-right" 
               data-toggle="tooltip" 
               data-placement="right" 
               title="" 
               data-original-title="Reload Page"> 
                <i class="fa fa-refresh"></i> 
            </a> 
        </nav> 
        <!-- ========= 
        Start Show Yor Name Section 
        ===================================--> 
        </div> 
        </header> 
        <!-- ========= 
    End portrait section 
    ===================================--> 
        <!-- ========= 
    Start Content section 
    ===================================--> 
        <section class="content open" 
                 id="main-content"> 
            <div class="body-content" 
                 id="blog"> 
                <div class="row"> 
                    <div class="col-md-10 col-md-offset-1"> 
                        <div class="blog-posts"> 
                            <div class="blog-post"> 
                                <h3 class="title with-icon"> 
                                    <span class="fa  fa-comment-o icn-title"></span> Add A Post 
                                </h3> 
                                <div class="box-block"> 
                                    <div class="row"> 
                                        <div class="col-md-6"> 
                                            <div class="form-group"> 
                                                <label for="Title">Title</label> 
                                                <asp:TextBox ID="Title" 
                                                             runat="server" 
                                                             CssClass="form-control"></asp:TextBox> 
                                            </div> 
                                            <div class="form-group"> 
                                                <label for="FeaturedImage">Featured Image</label> 
                                                <asp:FileUpload ID="FeaturedImage" 
                                                                runat="server" 
                                                                CssClass="form-control" /> 
                                            </div> 
                                        </div> 
                                    </div> 
                                    <div class="form-group"> 
                                        <label for="MesageForm">Body</label> 
                                        <asp:TextBox ID="Body" 
                                                     TextMode="MultiLine" 
                                                     Rows="8" 
                                                     runat="server" 
                                                     CssClass="form-control"></asp:TextBox> 
                                    </div> 
                                    <asp:Button id="btnAdd" 
                                                runat="server" 
                                                CssClass="btn btn-flat btn-lg" 
                                                Text="Add Post" 
                                                OnClick="btnAdd_Click" /> 
                                </div> 
                            </div> 
                        </div> 
                    </div> 
                </div> 
            </div> 
    </asp:Content> 

我后面的代码是:

public partial class AddPost : System.Web.UI.Page 
{ 
    protected void Page_Load(object sender, EventArgs e) 
    { 
 
    } 
 
    protected void btnAdd_Click(object sender, EventArgs e) 
    { 
        if(FeaturedImage.HasFile) 
        { 
            try 
            { 
                string filename = Path.GetFileName(FeaturedImage.FileName); 
                FeaturedImage.SaveAs(Server.MapPath("~/assets/images/blog/") + filename); 
            } 
            catch(Exception ex) 
            { 
                string error = ex.Message; 
            } 
        } 
 
        try 
        { 
            string connection = WebConfigurationManager.ConnectionStrings["ConnectionString"].ToString(); 
 
            SqlConnection con = new SqlConnection(connection); 
 
            SqlCommand cmd = new SqlCommand("AddPost", con); 
            cmd.CommandType = CommandType.StoredProcedure; 
            cmd.Parameters.AddWithValue("@Title", Title.Text); 
            cmd.Parameters.AddWithValue("@Date", DateTime.Now); 
            cmd.Parameters.AddWithValue("@FeatureImage", Path.GetFileName(FeaturedImage.FileName)); 
            cmd.Parameters.AddWithValue("@PostedBy", 1); 
            cmd.Parameters.AddWithValue("@Body", Body.Text); 
 
            con.Open(); 
            cmd.ExecuteNonQuery(); 
        } 
        catch(Exception ex) 
        { 
 
        } 
    } 
} 

我用 google 搜索了错误,但似乎没有任何内容与我的代码相关?真的被这个难住了,无法尝试任何修复,老实说不知道从哪里开始。据我所知,我没有进行转换,但也许正在发生我不知道的转换?

请您参考如下方法:

错误来自将字符串分配给 TextBox 变量。通常的原因是忘记了 Text 属性,并使用类似的东西:

MyTextbox = "Some string"; 

代替:

MyTextbox.Text = "Some string"; 

但是,由于您的方法中没有此类代码,并且错误消息指向 aspx 页面,因此错误出在标记生成的代码中的某处。

您有一个名为 Title 的文本框。 Page class 中已经有一个同名的字符串属性,并且当生成的代码尝试设置字符串属性时,分配将使用 TextBox 字段代替,因为它隐藏了字符串属性。

将 Title 文本框重命名为尚未使用的内容。