我正在创建一个服务器控件,基本上绑定两个下拉列表,一个用于国家,一个用于州,并更新国家/地区的selectedindexchanged事件的状态下拉列表.但是,它没有回发.有什么想法吗?将它们包装在UpdatePanel中的加分点(有渲染问题;也许是因为我没有要引用的页面?)
这就是我所拥有的(一些额外的数据访问内容被剥离):
public class StateProv : WebControl
{
public string SelectedCountry;
public string SelectedState;
private DropDownList ddlCountries = new DropDownList();
private DropDownList ddlStates = new DropDownList();
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
IList<Country> countries = GetCountryList();
IList<State> states = new List<State>();
if (SelectedCountry != null && SelectedCountry != "")
{
states = GetStateList(GetCountryByShortName(SelectedCountry).CountryShortName);
}
else
{
states.Add(new State { CountryId = 0, Id = 0, StateLabelName = "No states available", StateLongName = "No states available", StateShortName = "" }); …Run Code Online (Sandbox Code Playgroud) c# asp.net custom-server-controls selectedindexchanged drop-down-menu
感觉很脏.但也许它不是......使用StringBuilder编写XML是否可以?我的直觉说:"虽然这感觉不对,但它可能非常高效,因为它没有加载额外的库和开销,它没有做任何额外的方法调用XmlWriter调用." 它似乎只是一般的代码更少.XmlWriter有什么好处?
这是它的样子.我正在根据您来自的域构建OpenSearch XML文档.
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/xml";
string domain = WebUtils.ReturnParsedSourceUrl(null); //returns something like www.sample.com
string cachedChan = context.Cache[domain + "_opensearchdescription"] as String;
if (cachedChan == null)
{
StringBuilder sb = new StringBuilder();
sb.Append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
sb.Append("<OpenSearchDescription xmlns=\"http://a9.com/-/spec/opensearch/1.1/\" xmlns:moz=\"http://www.mozilla.org/2006/browser/search/\">");
sb.Append(" <ShortName>Search</ShortName>");
sb.Append(" <Description>Use " + domain + " to search.</Description>");
sb.Append(" <Contact>contact@sample.com</Contact>");
sb.Append(" <Url type=\"text/html\" method=\"get\" template=\"http://" + domain + "/Search.aspx?q={searchTerms}\" />");
sb.Append(" <moz:SearchForm>http://" + domain + "/Search.aspx</moz:SearchForm>");
sb.Append(" <Image height=\"16\" width=\"16\" type=\"image/x-icon\">http://" …Run Code Online (Sandbox Code Playgroud) 我有一个抽象的课.我们称之为Lifeform.它看起来像:
public abstract class Lifeform {
public virtual int Legs { get; set; }
public virtual int Arms { get; set; }
public virtual bool Alive { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
(虚拟属性是由于我正在使用nHibernate这一事实,如果它们不是虚拟属性,它会发出呜呜声.)
然后我有一个继承自Lifeform类的类; 我们称之为人类.它看起来像:
public class Human: Lifeform {
public virtual bool Hat { get; set; }
public virtual int Age { get; set; }
public virtual string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
一切都很可爱,我可以使用我的课程,当我使用它时,人类会获得腿部,手臂和活力属性.除此之外,也就是说,当我尝试使用Human类创建Web服务时.序列化对象为我提供了帽子,年龄和名字 - 但没有腿,武器或活动属性.
我见过一个建议使用的解决方法
[System.Xml.Serialization.XmlInclude(typeof(Human))]
Run Code Online (Sandbox Code Playgroud)
在基类(Lifeform)上,但这似乎是一个违反OO的可怕黑客.将基类上的链接放到继承它的类上?好恶.
有没有人遇到过这个具体问题?有什么想法吗?如果更深入的示例有助于描述我正在做的更多,我将提供更多代码.
我在http://qotr.net上有一个域,我正在尝试将其设置为应用程序,以便可以使用 OAuth。它是在几周前建立的,我们刚刚在我们的应用程序上实现了 OAuth 钩子,当时 Facebook 开始给我们错误。
现在,当我进入设置页面并编辑任何内容时,我得到:
错误应用域:qotr.net 不是有效域。站点 URL 不是有效的 URL。
我有:qotr.net对于应用程序域和http://qotr.net站点 url。
http://developers.facebook.com/tools/debug/og/object?q=http%3A%2F%2Fqotr.net
告诉我它无法解析 qotr.net。该站点显然已启动并可使用,并且 Google OAuth 有效。
我在网上找不到任何关于为什么它可能无法正确解析的信息;有任何想法吗?
编辑:更新以获得更清晰.
我有一个无序的项目列表,我需要本地化.而不是包装每个列表项的文本 - 在数百个<li>的过程中,可能会杀了我 - 我决定将<ul>包装在文字中.这样,我可以在资源文件中抛出"text"属性进行本地化.
但是,asp.net认为我的代码中的每个换行符应该替换为<br />.有没有一个属性或方法可以解决这个问题,除了在文本中替换每个\n之外什么都没有?我试过Mode ="PassThrough",这似乎没有什么区别.
我暂时在<ul>的显示内部完成了所有内容:在我的CSS中没有,但它感觉很乱.我宁愿它根本不渲染<br />.
码:
<asp:Literal id="literal" runat="server">
<ul>
<li>Item 1</li>
<li>Item 2</li>
...
<li>Item 50</li>
</ul>
</asp:Literal>
Run Code Online (Sandbox Code Playgroud)
它给了我什么:
<ul>
<br />
<li>Item 1</li>
<br />
<li>Item 2</li>
<br />
...
<br />
<li>Item 50</li>
<br />
</ul>
Run Code Online (Sandbox Code Playgroud)