对网络开发的某些方面缺乏经验(我总是更多地集中在后端而不是前端),任何人都可以告诉我他是否应该担心网页开头的DOCTYPE声明吗?
是最常见的HTML 4.01,我应该构建我的Web应用程序以符合此标准吗?
只是寻找有关Web服务界面设计的最佳实践的一些反馈.
我有两个选择:
选项1
public string GetSomeData(SomeCriteriaClass criteria);
Run Code Online (Sandbox Code Playgroud)
其中SomeCriteriaClass定义为:
public int ID;
public string Name;
public string Property2; etc.
Run Code Online (Sandbox Code Playgroud)
选项2
public string GetSomeData(int id, string name, string property2)
Run Code Online (Sandbox Code Playgroud)
哪个是首选?这似乎是设计模式的冲突 - 1是在一个类中包装参数,而另一个是保持Web服务接口的灵活性和开放性.
第二个问题是 - 如果我们选择Option1 - 你如何通过URL调用它?
谢谢
如果我要在与我的网站相同的计算机上托管Web服务,并将敏感信息传递给它,我是否需要使用https进行呼叫?
例如,我会使用localhost引用它,所以这些信息不会安全,因为它不是通过不安全的通道传输的吗?
编辑:我应该提到这个Web服务无法从外部访问.
谢谢
在C#中,如果我声明一个自动实现的属性,为什么我必须声明get和set部分?
即
public string ThisWorks { get; set; }
public string ThisDoesnt { get; }
Run Code Online (Sandbox Code Playgroud)
这不仅仅是语法糖 - 即编译器为属性插入一个私有字段?那问题为什么呢?
好奇.
我对DI概念很新,但我在设计中已经在某种程度上使用它 - 主要是通过'注入'接口到构造函数并让工厂创建我的具体类.好的,它不是基于配置的 - 但它永远不需要.
我开始研究诸如Spring.NET和Castle Windsor之类的DI框架,并偶然发现了Ayende的博客.
我从中得到的是
A)DI框架很棒,但B)这意味着我们不必担心我们的系统是如何根据依赖性设计的.
对我来说,我已经习惯于如何松散地耦合我的系统,但同时对依赖关系进行某种控制.
我有点害怕失去这种控制,它只是一个免费的.ClassA需要ClassB =没问题,只要问,你就收到了!嗯.
或者这就是重点,这就是未来,我应该选择它吗?
思考?
我正在尝试Flexigrid用于一个新的应用程序 - 我真的很感动它但我找不到一种方法来设置代码的宽度.
这样做的主要原因是获取GRID(而不是网格内的列)以完全对齐窗口的大小.我知道,这是对水平缩放器的嘲弄,但这就是我必须要做的!
仅供参考我的设置如下:
$(document).ready(function() {
$("#flex1").flexigrid
(
{
url: '<%= ResolveUrl("~/Data.ashx") %>?filter=none',
dataType: 'json',
colModel: [
{ display: '', name: 'view', width: 20, sortable: true, align: 'center' },
{ display: 'Street', name: 'Street', width: 260, sortable: true, align: 'left' },
{ display: 'Town', name: 'Town', width: 200, sortable: true, align: 'left' },
{ display: '', name:'Actions', width:30, sortable: false, align: 'center' }
],
sortname: "Street",
sortorder: "asc",
usepager: true,
title: 'Streets',
useRp: true,
rp: 15,
showTableToggleBtn: …Run Code Online (Sandbox Code Playgroud) 想象一下,我有一张Customer表.
在这个表中是一个ID列,主键int,Identity,所有爵士乐.我们的客户也有一个名字.
现在,如果我要在报告或电子邮件中发送信息,我的网站中有一个链接可以唯一地标识该客户,那么使用主键ID字段是一种好的做法吗?
我所有的直觉都告诉我这很可怕,并且代理ID应该只能用于数据库 - 并且永远不会以这种方式暴露给外部世界.
但我正在寻找将来可以使用的杀手论证,如果(当)提出这个案例.
思考?
我们必须自己修改数据库并管理IDENTITY列(而不是依赖于auto-inc字段).
我们的解决方案是有一个"生成器"表,它有一个auto-inc字段.我们插入此表,然后读取SCOPE_IDENTITY值以获取我们的新ID,例如
insert into NewIDEntity
(CreationDate)
select
GetDate()
select @EntityID = SCOPE_IDENTITY()
Run Code Online (Sandbox Code Playgroud)
我们主要关注以下场景:
•事务1 INSERTS进入NewID并接收101作为要插入实体表的新ID.
•在它可以提交之前,将事务2 INSERTS转换为NEWID并且还接收101作为新ID(这是因为SCOPE_IDENTITY()将在当前范围的上下文中返回ID.原始行尚未提交,因此我们期望值为101)
•事务1提交并写入行.
•事务2尝试提交但已写入101并导致主键违规并中止事务.
但是在运行时,似乎SCOPE_IDENTITY()由SQL Server处理,即使在READ UNCOMMITTED隔离级别下运行,我们也不会发生冲突.
这没关系,还是我们找不到的东西?
谢谢邓肯
我知道可以在MVC3中的Javascript中嵌入@Html,但是我无法使用以下内容并且不确定这是否可行.
使用jQuery DataTable,我有一个AJAX调用来创建我的新行,然后我使用datatable API以编程方式添加它.这一切都有效,但后来我想把我的编辑ActionLink放到行上,它只显示文本"编辑",而不是链接.
当然我可以手动完成,只是想知道是否有更好的选择.
例如
tablePallets.fnAddData([ GetPalletActionLinks(), etc...
function GetPalletActionLinks() {
var result = @Html.ActionLink("Edit", "EditPallet", new { id = 1 });
return result;
}
Run Code Online (Sandbox Code Playgroud)
我目前硬编码ID = 1,但我可以轻松地为新创建的行获取此信息.
谢谢邓肯
我想在我的共享布局模板中包含一个部分视图.此部分视图也有自己的控制器和模型,例如
_MyPartialView.cs
@model MyModelClass
..一些代码.. @ Model.SomeProperty
PartialController.cs
public PartialViewResult RenderMyPartial()
{
var model = new MyModelClass();
model.Initialize();
return PartialView("_MyPartialView", model);
}
Run Code Online (Sandbox Code Playgroud)
_Layout(共享布局)
@ Html.Action("RenderMyPartial","PartialController")
这里的意图是布局页面将调用PartialController,它将消失并填充模型并返回部分视图,该部分视图将绑定到此模型并在共享布局主模板中呈现.
但是当我运行它时,我收到以下错误:
未找到路径'/ XXX /'的控制器或未实现IController.
我已经环顾四周,但很惊讶这似乎不是一个非常常见的设计模式,并想知道为什么?有任何想法吗?
谢谢邓肯
想象一下以下场景 - 我们有Page1包含控件A和控件B.
说控制A有一个按钮,单击此按钮我们希望控制B做出反应.但我们希望以抽象的方式做到这一点,即我们不能让Control B知道有关Control A的任何信息,反之亦然.
这样我们就可以孤立地开发这些控件,并通过单元测试来驱动它们.
现在,我以为我有解决方案,只想知道你们对它的看法.
在Control A的按钮上单击,我在Session上放了一条"消息",即Session ["MESSAGES"] ="ControlA_Click".
在Page1中,在Page_LoadComplete()上,我调用了ProcessMessages,如下所示:
List<Message> messages = SessionMessages.GetMessageList(Page);
foreach(Message m in messages)
{
//Get Controls
ControlA controlA = FindControl("controlA") as ControlA;
controlA .ProcessMessage(m);
ControlB controlB = FindControl("controlB") as ControlB;
controlB.ProcessMessage(m);
}
Run Code Online (Sandbox Code Playgroud)
在ControlB的ProcessMessage()方法中,我们可以对ControlB感兴趣的消息做出反应,如下所示:
if (m.MessageName == SessionMessages.C_MESSAGE_SEARCH)
{
this.Visible = true;
}
Run Code Online (Sandbox Code Playgroud)
对我而言,这似乎有效.它允许我们完全独立地开发这些控件,同时仍允许在抽象级别进行控制间通信.
我能想到的唯一的事情可能会带来这样轰然倒下的也许 ASP.NET生命周期有关页面和用户控件.我的方法是,在拥有页面上调用Page_LoadComplete()之前,应该在控件上处理所有事件.
思考?
asp.net unit-testing mocking separation-of-concerns isolation
如果我使用LINQ从数据库中检索结果,有没有办法可以自动生成XML来生成XML?
例如:
DataClasses1DataContext db = new DataClasses1DataContext(C_CONN_STRING);
var q = from stock in db.GetTable<Stock>()
where stock.Group == 1
select stock;
foreach(Stock s in q)
{
//automatically create XML document here?
}
Run Code Online (Sandbox Code Playgroud)
对不起,如果这是一个非常基本的问题,任何帮助表示赞赏
asp.net ×2
jquery ×2
web-services ×2
.net ×1
c# ×1
datatable ×1
doctype ×1
dtd ×1
flexigrid ×1
html ×1
identity ×1
isolation ×1
javascript ×1
linq ×1
mocking ×1
razor ×1
security ×1
sql-server ×1
unit-testing ×1
xml ×1