开发者

C# Cannot implicitly convert type 'string' to 'string[]' within an if else statement

I am trying to read a string into an array and I get the error "Cannot implecitly convert type 'string' to 'string[]'.

The error occurs here:

string[] sepText = result.Tables[0].Rows[0].Field<string>("WebHTML").UrlDecode();

My full if else statement is below:

if (!string.IsNullOrEmpty(result.Tables[0].Rows[0].Field<string>("WebHTML")))
            {
                string[] sepText = result.Tables[0].Rows[0].Field<string>("WebHTML").UrlDecode();
                NewsContent.Text = sepText[1];
                if (!string.IsNullOrEmpty(sepText[0]))
                    Image1.ImageUrl = sepText[0];
                else
                    Image1.Visible = false;
                NewsTitle.Text = String.Format("<a href=\"{0}/news/{1}/{2}.aspx\">{3}</a>", Extensions.GetServerName(true), result.Tables[0].Rows[0].Field<int>("News_Item_ID"), result.Tables[0].Rows[0].Field<string>("Title").UrlFormat(), result.Tables[0].Rows[0].Field<string>("Title"));
                Hyperlink1.NavigateUrl = String.Format("{0}/news/{1}/{2}.aspx", Extensions.GetServerName(true), result.Tables[0].Rows[0].Field<int>("News_Item_ID"), result.Tables[0].Rows[0].Field<string>("Title").UrlFormat());
            }
            else
            {
 开发者_StackOverflow               Hyperlink1.Visible = false;
                Image1.Visible = false;
            }

Thank you for your help!

EDIT Code for URL Decode:

public static string UrlDecode(this string str)
{
    return System.Web.HttpUtility.UrlDecode(str);
}


result.Tables[0].Rows[0].Field<string>("WebHTML") is going to give you the value of the WebHTML field in the first row in the first table which is a single string rather than a string[].

You may want to show your code for UrlDecode() since it looks like a custom implementation rather than one of the built-in framework versions.

You also declare the UrlDecode method to take a string as a parameter and return a string. Remember, a string is not the same thing as a string array.


It seems that you are trying to put:

result.Tables[0].Rows[0].Field<string>("WebHTML").UrlDecode();

which returns a string, into an array of strings. Simply delare your sepText variable as a string rather than a string array and you should be good to go, e.g.:

string sepText = result.Tables[0].Rows[0].Field<string>("WebHTML").UrlDecode();

Later in your code you will clearly need to read the contents of the string like this:

Image1.ImageUrl  =sepText;


Assuming the UrlDecode you are using is the one from here then the result is a string and not a string[] !


UrlDecode returns a string and you are assigning it to an array.

If you want the parts you will have to use the string to create an Url object.

Url url = new Url(result.Tables[0].Rows[0].Field<string>("WebHTML"));

and then get the parts.

See: Get url parts without host


I don't think URLDecode works the way you think it works. All URLDecode does is remove URL encoding from a string. It does not return an array of strings - only the decoded value of the string you gave it.

http://msdn.microsoft.com/en-us/library/system.web.httputility.urldecode.aspx

Example: Your web browser replaces a space with %20. This changes the %20 back to a space.


That's because the result of this line is "string" and you're trying to assign it to an array since UrlDecode do not produce an array. What you probably wanted is to use a method split() to create an array of separators?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜