我想问一个关于如何处理简单的面向对象设计问题的问题.我对自己处理这种情况的最佳方法有一些想法,但我有兴趣听听Stack Overflow社区的一些意见.还赞赏相关在线文章的链接.我正在使用C#,但问题不是语言特定的.
假设我写一个视频商店应用程序,其数据库中有一个Person表,其中PersonId,Name,DateOfBirth和Address领域.它还有一个Staff表,其中包含指向a的链接PersonId,以及一个Customer也链接到的表PersonId.
一个简单的面向对象的方法是说Customer"是一个" Person,因此创建类有点像这样:
class Person {
public int PersonId { get; set; }
public string Name { get; set; }
public DateTime DateOfBirth { get; set; }
public string Address { get; set; }
}
class Customer : Person {
public int CustomerId { get; set; }
public DateTime JoinedDate { get; set; }
}
class Staff …Run Code Online (Sandbox Code Playgroud) 我有一个返回数组(string [])的方法,我试图将这个字符串数组传递给一个Action Link,这样它就会创建一个类似于的查询字符串:
/Controller/Action?str=val1&str=val2&str=val3...etc
Run Code Online (Sandbox Code Playgroud)
但是当我传递新的{str = GetStringArray()}时,我得到以下网址:
/Controller/Action?str=System.String%5B%5D
Run Code Online (Sandbox Code Playgroud)
所以基本上它采用我的字符串[]并在其上运行.ToString()来获取值.
有任何想法吗?谢谢!
我只想知道如何验证(或清理)ASP.NET MVC中的用户输入,以便无论提交的值如何都不会抛出HttpRequestValidationException.例如,使用文本输入,如果用户输入<BR/>,将导致异常并显示黄色死亡屏幕.我不希望这样.我想捕获异常并在当前视图中显示一个用户友好的错误,最好是控件加载了相同的值.
我找到了这个http://www.romsteady.net/blog/2007/06/how-to-catch-httprequestvalidationexcep.html,但它对我的目的没用.另外,我发现这个http://msdn.microsoft.com/en-us/library/aa973813.aspx并尝试放入模型绑定器但我无法工作.
我正在使用System.IO.Directory.GetCurrentDirectory()来获取我的Web服务中的当前目录,但这不会给我当前目录.如何获取Web服务中的当前目录?
谢谢斯图尔特
是否有任何技巧可以阻止SQL Server授权像&,<和>这样的字符?我正在尝试在我的XML文件中输出一个URL,但SQL想要用' &'' 替换任何'&'
请执行以下查询:
SELECT 'http://foosite.com/' + RTRIM(li.imageStore)
+ '/ImageStore.dll?id=' + RTRIM(li.imageID)
+ '&raw=1&rev=' + RTRIM(li.imageVersion) AS imageUrl
FROM ListingImages li
FOR XML PATH ('image'), ROOT ('images'), TYPE
Run Code Online (Sandbox Code Playgroud)
我得到的输出是这样的(&s被授权):
<images>
<image>
<imageUrl>http://foosite.com/pics4/ImageStore.dll?id=7E92BA08829F6847&raw=1&rev=0</imageUrl>
</image>
</images>
Run Code Online (Sandbox Code Playgroud)
我想要的是这个(&s没有权利):
<images>
<image>
<imageUrl>http://foosite.com/pics4/ImageStore.dll?id=7E92BA08829F6847&raw=1&rev=0</imageUrl>
</image>
</images>
Run Code Online (Sandbox Code Playgroud)
如何防止SQL服务器将'&'赋值为' &'?
这可能是我第十次实施这样的事情,而且我从未对我提出的解决方案百分百满意.
使用mysql表而不是"正确"的消息传递系统的原因很有吸引力,主要是因为大多数应用程序已经将一些关系数据库用于其他东西(对于我一直在做的大多数事情,它往往是mysql),而很少有应用程序使用消息传递系统.此外 - 关系数据库具有非常强大的ACID属性,而消息传递系统通常没有.
第一个想法是使用:
create table jobs( id auto_increment not null primary key, message text not null, process_id varbinary(255) null default null, key jobs_key(process_id) );
然后入队看起来像这样:
insert into jobs(message) values('blah blah');
出列似乎是这样的:
begin; select * from jobs where process_id is null order by id asc limit 1; update jobs set process_id = ? where id = ?; -- whatever i just got commit; -- return (id, message) to application, cleanup after done
表和入队看起来不错,但出队有点困扰我.回滚的可能性有多大?还是被封锁了?我应该用什么键来制作O(1)-ish?
或者,我正在做什么更好的解决方案?
我目前使用jTemplates在客户端上创建一个相当大的表,每一行都有一个按钮,它将打开一个jQuery UI对话框.但是,当我向下滚动页面并单击其中一个按钮时,jQuery对话框将打开,但滚动位置会丢失,页面会跳回到顶部(阻止和实际对话框显示在屏幕上).有谁见过或知道可能导致这个问题的原因?
谢谢.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Linq.Expressions;
using System.Text;
namespace ConsoleApplication1
{
public class Class1
{
static void Main(string[] args)
{
List<Car> mylist = new List<Car>();
Car car1;
Car car2;
Car car3;
car1 = new Car()
{
make = "Honda",
id = 1
};
car2 = new Car()
{
make = "toyota",
id = 2
};
car3 = new Car()
{
make = "Honda",
id = 3,
color = "red"
};
mylist.Add(car1);
mylist.Add(car2);
**////mylist.Where(p => p.id == 1).SingleOrDefault() = …Run Code Online (Sandbox Code Playgroud) 我正在阅读Heads First C#(它非常有趣且用户友好),但我想知道是否有人有一个有用的比喻来描述名称空间,类,方法,属性等如何"融合在一起"?
类是父类,方法是小孩等,还是更复杂?
一个名字空间可以是一个房子,一个类是一个房间(浴室)和一个方法可以在那个房间里做什么(洗涤等)和属性是做这项活动时可以做的,使用肥皂,热水...
......我会得到我的外套.
c# ×4
asp.net-mvc ×2
oop ×2
.net ×1
actionlink ×1
apache-flex ×1
arrays ×1
asp.net ×1
composition ×1
inheritance ×1
job-queue ×1
jquery-ui ×1
jtemplate ×1
linq ×1
mysql ×1
namespaces ×1
routes ×1
scroll ×1
sql ×1
vb.net ×1
web-services ×1
xml ×1