我正在写一些代码,我需要从我的页面中的Calendar控件读取日期值(Ajax工具包:日历扩展器).
代码如下:
DateTime newSelectedDate = myCalendarExtender.SelectedDate;
Run Code Online (Sandbox Code Playgroud)
给出以下错误:
Cannot implicitly convert type 'System.DateTime?' to 'System.DateTime'. An explicit conversion exists (are you missing a cast?)
Run Code Online (Sandbox Code Playgroud)
但是,通过插入一个演员我可以得到代码工作:
DateTime newSelectedDate = (DateTime)myCalendarExtender.SelectedDate; // works fine!
Run Code Online (Sandbox Code Playgroud)
日历控件的"SelectedDate"属性(Ajax工具包)将数据类型描述为"System.DateTime?" ......显然'?' 与所有这些有关.
当数据类型包含此符号时,究竟发生了什么?(?)...我假设我可以将'SelectedDate'属性直接应用于'DateTime'类型的变量而不进行强制转换.
谢谢
今天我发布了一个小的asp.net beta网络应用程序,允许内部员工修改一些产品信息.我们开始遇到用户覆盖彼此产品信息的问题......即使每个工作人员正在编辑一个完全不同的行(产品).
经过一些谷歌搜索,我想我知道发生了什么,它与静态变量的使用有关,下面是一个快速粗略的问题示例:
// EditProductGroup.aspx.cs
public partial class EditProductGroup : System.Web.UI.Page
{
private static int _groupId = 0;
protected void Page_Load(object sender, EventArgs e)
{
_groupId = Convert.ToInt16(Request.QueryString["GroupID"]);
// get existing ProductGroup information from database using
//_groupId to find the row and populate textboxes
}
private void saveProductGroupData()
{
// when user hits 'save changes' button, update row
//where the primary key column 'ProductGroupID' matches _groupId in the table
}
}
Run Code Online (Sandbox Code Playgroud)
因此,根据我的研究,一个静态变量实际上存在于整个应用程序中,这意味着如果多个用户正在使用该应用程序,他们将有效地读取"_groupId"的相同"值",并且在某些情况下实际设置它导致页面的另一个用户"实例"将数据保存到错误的行(ProductGroupId).
我的意图是静态变量与其他用户隔离,并且不应该是 - 每个用户都有自己的页面实例,因此他们自己的'_groupId'变量实例.
幸运的是,这一切都发生在dev/staging数据库而不是live db上.我不确定是否只需要删除'static'关键字来停止每个人设置/读取的变量.
有什么想法吗?谢谢
我最近开始了一项新工作,并注意到所有SQL表都使用GUID数据类型作为主键.
在我以前的工作中,我们使用整数(自动增量)作为主键,在我看来,它更容易使用.
例如,假设你有两个相关的表; Product和ProductType - 我可以轻松地交叉检查特定行的两个表的'ProductTypeID'列,以快速映射我脑中的数据,因为它易于存储数字(2,4,45等),而不是(E75B92A3- 3299-4407-A913-C5CA196B3CAB).
额外的挫折感来自于我想了解表格是如何相关的,遗憾的是没有数据库图表:(
很多人说GUID是更好的,因为您可以在C#代码中定义唯一标识符,例如使用NewID()而不需要SQL SERVER来执行此操作 - 这也允许您临时知道ID将是什么....但我已经看到有可能仍然检索'下一个自动递增的整数'.
DBA承包商报告说,如果我们使用Integer类型而不是GUIDS,我们的查询可以快30%...
为什么GUID数据类型存在,它真正提供了哪些优势?...即使是某些专业人士的选择,必须有一些很好的理由来解释为什么它的实现?
过去两年我一直在使用ASP.NET(C#).我学到了很多,但还有更多要学习:)
我已经使用MasterPages,'Web用户控件'来处理标题,导航,页脚等内容.
我从未真正理解的一件事是为您的内容和逻辑使用"Web用户控件"的做法;
Home.aspx ------ Home.ascx
AboutUs.aspx ----- AboutUs.ascx
Ordering.aspx ---- Ordering.acsx
Run Code Online (Sandbox Code Playgroud)
在过去的几个月里,我一直在使用这个结构的一些项目.我知道这实际上是常见的做法,但我并不完全了解全部的好处.
我记得当我之前尝试过这种方法时,最终出现了像Gridview这样的控件的可怕的viewstate问题...一旦我把所有逻辑输出并放入.aspx页面,一切正常.
我现在意识到,也许我需要将Gridview添加到viewstate集合中......但这只会加深我理解为什么使用这种方法的困难 - 给定viewstate问题.
我完全理解"Web用户控件"在诸如标题,菜单,页脚等内容方面的优势......任何涉及重复的项目,但我看过的项目都有非常具体的页面/控件 - 换句话说,它不太可能要在其他任何地方重用--aspx页面只包含一个带有内容和逻辑的控件(.ascx),它只会在该页面上使用,而不是其他地方.
忽略"代码重用",这种方法还有哪些其他好处?
我试图将通用列表绑定到转发器时遇到了一些问题.泛型列表中使用的类型实际上是一个结构.
我在下面构建了一个基本示例:
struct Fruit
{
public string FruitName;
public string Price; // string for simplicity.
}
protected void Page_Load(object sender, EventArgs e)
{
List<Fruit> FruitList = new List<Fruit>();
// create an apple and orange Fruit struct and add to List<Fruit>.
Fruit apple = new Fruit();
apple.FruitName = "Apple";
apple.Price = "3.99";
FruitList.Add(apple);
Fruit orange = new Fruit();
orange.FruitName = "Orange";
orange.Price = "5.99";
FruitList.Add(orange);
// now bind the List to the repeater:
repFruit.DataSource = FruitList;
repFruit.DataBind();
}
Run Code Online (Sandbox Code Playgroud)
我有一个简单的结构来模拟Fruit,我们有两个属性,分别是FruitName和Price.我首先创建一个类型为'FruitList'的空通用列表.
然后我使用结构(苹果和橙色)创建两个水果.然后将这些水果添加到列表中.
最后,我将通用列表绑定到转发器的DataSource属性... …
我目前正在尝试了解LINQ的一些基础知识.我一直在使用LINQPad来查询Netflix OData源.
在使用lambda查询时,我似乎无法选择单个属性 - 理解查询完美无缺.我找到了一段代码,使用Netflix oData源上的lambdas执行更复杂的查询,这似乎适用于返回实体的一个属性.
// works fine
var compQuery = from t in Titles
where t.ReleaseYear == 2007
select new { t.Name };
compQuery.Dump();
// fails: "Can only specify query options (orderby, where, take, skip) after last navigation."
var lambdaQuery = Titles
.Where(t => t.ReleaseYear == 2007)
.Select(t => t.Name);
lambdaQuery.Dump();
// works fine - found on SO.
var lambdaQuery2 = People
.Expand("TitlesActedIn")
.Where(p => p.Name == "George Lucas")
.First()
.TitlesActedIn.Select(t => t.ShortName);
lambdaQuery2.Dump(); …Run Code Online (Sandbox Code Playgroud) 我有几个网络应用程序都利用发送电子邮件,无论是通过联系表格,还是某种通知更新等.
我发现的问题是,没有任何方法可以跟踪从Web应用程序发送的电子邮件,所以我想出了一个可能的解决方案:

这真的很直接 - 而不是让每个Web应用程序自己发送电子邮件,我想通过创建一个中央电子邮件发件人服务来统一该过程.
在基本术语中,每个应用程序只会在数据库的"出站电子邮件"表中使用"收件人","发件人","主题","内容"数据创建一行.
然后,电子邮件发件人服务(Win服务)将从发件箱中选择电子邮件,发送它们,然后标记为已发送.
即使我将"基本电子邮件"信息(来自,来自主题,内容)存储在数据库中,我真正想做的还是存储"MailMessage"对象本身,以便电子邮件发件人服务可以反序列化原始的MailMessage,因为这将允许任何应用程序完全自定义电子邮件.
以这种方式使用MailMessage对象有任何问题吗?
更新:另一个目标是存储已发送的电子邮件日志 - 因此使用数据库的原因.