好吧,这一定是一些愚蠢的东西,我做错了,但我找不到它.
MVC行动:
[AcceptVerbs(HttpVerbs.Post)]
public virtual ActionResult Create(BatchCreateViewModel createModel)
{
return RedirectToRoute(MVC.Home.Display());
}
Run Code Online (Sandbox Code Playgroud)
BatchCreateViewModel:
public class BatchCreateViewModel
{
bool searchAVM;
bool searchBPO;
bool searchAppraisal;
int transactionAge;
string Description;
string uploadfile;
}
Run Code Online (Sandbox Code Playgroud)
View页面上有一些名为"searchAVM","searchBPO","searchAppraisal",(复选框)"transactionAge"(一组带整数值的单选按钮)和"description"(文本框)的控件
当我在"Create"的条目处中断时,createModel就在那里,但是具有所有默认值(对于字符串为null,对于布尔值为false,对于int为0).如果我检查Request.Form,值就在那里,但它们只是没有进入模型.
我究竟做错了什么?
(这是MVC 2,框架4)
让我们假设一个应用程序在模型/表示层中具有所有必要的业务规则,并且它们工作正常.我的问题是,是否应在SQL Server等存储库中使用冗余业务规则(即两个日期的跨度不能与任何其他现有跨度重叠).
在SQL Server中添加强制执行此规则的约束是否必要/有益?一方面,它可以防止任何人(包括DBA)在绕过应用程序时无意中破坏业务规则.此外,我们已经通过主键和外键在存储库中拥有某些形式的业务规则.另一方面,重复的规则需要额外的时间来开发和维护.
这个问题涵盖了许多不同的技术,所以我故意保持标签的通用性.
我见过的大多数ASP.NET MVC示例都描述了用户正在查看对象(或对象集合)然后从该页面移动到显示用户完成的表单的情况.在提交具有良好输入的表单后,用户被重定向回显示对象(或列表)的页面,并且用户可以看到他们的更改成功.
我遇到了每个业务规则都没有视图或列表页面的情况.
在ASP.NET MVC中,这种场景有哪些好的方法?
在使用Classic ASP和ASP.NET的过去,我会处理输入,然后向用户显示成功消息或带有错误的表单 - 所有这些都来自同一页面.这似乎违背了最佳实践(SRP,视图中没有逻辑等).
一种简单的方法是重定向到一个新页面,告诉用户他们的更改是成功的,但随后用户可以随时访问该页面.如果我开始使用逻辑来防止这种情况(即tempdata),那么解决方案就会变得很脏.
我可以重定向到目标网页,但没有确认.也许我可以依赖一个消息系统,当他们返回登录页面时向最终用户显示确认信息?
我即将开始谷歌搜索,但我想我会从这里开始.我们已经找到了一个枚举SharePoint网站集/网站的VB脚本.它调用stsadm来实现这一点,并递归地评估每个站点以获取子站点.
我想知道我们是否可以修改该脚本以获取每个网站集/站点的大小(以字节为单位).
我们正在使用MOSS 2007.
我有一个存储过程,该过程使用XML参数并将“实体”节点作为记录插入表中。除非其中一个数字字段在XML中的值为空字符串,否则这将正常工作。然后,它将引发“将数据类型nvarchar转换为数字时出错”错误。
有没有一种方法可以告诉SQL将下面代码中的这些数字字段的空字符串转换为null?
-- @importData XML <- stored procedure param
DECLARE @l_index INT
EXECUTE sp_xml_preparedocument @l_index OUTPUT, @importData
INSERT INTO dbo.myTable
(
[field1]
,[field2]
,[field3]
)
SELECT
[field1]
,[field2]
,[field3]
FROM OPENXML(@l_index, 'Entities/Entity', 1)
WITH
(
field1 int 'field1'
,field2 varchar(40) 'field2'
,field3 decimal(15, 2) 'field3'
)
EXECUTE sp_xml_removedocument @l_index
Run Code Online (Sandbox Code Playgroud)
编辑:并且如果有帮助,示例XML。除非我在上面的代码中注释掉field3或在下面的field3中提供一个值,否则将引发错误。
<?xml version="1.0" encoding="utf-16"?>
<Entities>
<Entity>
<field1>2435</field1>
<field2>843257-3242</field2>
<field3 />
</Entity>
</Entities>
Run Code Online (Sandbox Code Playgroud) 我很难找到在遵循SoC的情况下在其存储库中使用EF4的ASP.NET MVC解决方案的示例.
任何人都可以向我提供以下示例(开源,书籍,教程,文章等)的参考资料吗?
除了上面的核心技术/模式/主体之外,如果这些示例也涵盖了这些主题,我将非常感激,因此我可以看到它们如何随EF4变化:
覆盖上下文接口使用的一个例子是Stack Overflow,但如果它存在,我正在寻找更全面的东西.
非常感谢!
我有一个父实体,其中包含子实体列表.当使用NHibernate从SQL中检索具有子项的给定父项时,如果没有子项或者如果子项的日期与where条件匹配,则它可以正常工作.
如果存在与where子句不匹配的子项,则父项为null.我希望父项初始化为空子列表.
有关如何修改下面的代码以实现此目的的任何想法?
实体:
public class Parent
{
public int ParentId;
public IList<Child> Children { get; set; }
public Parent()
{
Children = new List<Child>();
}
}
public class Child
{
public int ChildId;
public DateTime ChildDate;
public Parent Parent { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
库:
IList<Parent> foundParents = new List<Parent>();
var criteria1 = DetachedCriteria.For<Parent>()
.Add(Restrictions.Eq("ParentId", parentId))
.CreateCriteria("Children", JoinType.LeftOuterJoin)
.Add(Restrictions.Or(
Restrictions.IsNull("ChildDate"), // no children at all
Restrictions.And(
Restrictions.Ge("ChildDate", startDate),
Restrictions.Le("ChildDate", endDate)
)
));
foundParents = Session
.CreateMultiCriteria()
.Add<Parent>(criteria1)
.SetResultTransformer(new DistinctRootEntityResultTransformer()) …Run Code Online (Sandbox Code Playgroud) 我有一个CustomAuthorize属性,用于检查用户是否可以访问功能(用户或角色可以与一组分层函数中的项相关联).
对于给定的行动方法......
[CustomAuthorize("Security.Admin.ManageWidgets.Update")]
Run Code Online (Sandbox Code Playgroud)
这有效,但我担心安全对象的更改可能会导致在运行时才会检测到的问题.我意识到我可以编写单元测试来减轻这种风险,但我想知道是否可以在编译时检查属性参数.我也喜欢Intellisense帮我输入这个表达式.
理想情况下,我可以传递一个lambda表达式.
[CustomAuthorize(i => i.Admin.ManageWidgets.Update)]
Run Code Online (Sandbox Code Playgroud)
不幸的是,这目前无法实现(Microsoft提供的其他信息).
我还尝试封装表达式,希望它被评估,然后作为字符串传递给属性,但是也无法使用相同的错误进行编译(Expression不能包含匿名方法或lambda表达式).
[CustomAuthorize(LambdaToString(i => i.Admin.ManageWidgets.Update))]
Run Code Online (Sandbox Code Playgroud)
如何为自定义属性参数添加一些设计时/构建时支持?
我们的团队被要求为现有的SQL Server后端编写Web接口,该后端源于Access.
其中一个要求/约束是我们必须限制对SQL后端的更改.我们可以创建视图和存储过程,但是我们已经被要求按原样保留表/列.
SQL后端不太理想.由于缺少外键,大多数关系都是隐含的.有些表缺少主键.表和列名称不一致,包括空格,斜杠和井号等字符.
除了找到一份新工作或要求他们重新考虑这一要求之外,任何人都可以提供任何解决这一缺陷的良好模式吗?
注意:我们将使用SQL Server 2005和ASP.NET与.NET Framework 3.5.
我的业务逻辑在周六或周日不执行某些功能.我希望我的单元测试能够验证这些功能是否已执行,但测试将在周六/周日失败.
我认为最简单的方法是让单元测试传达一个友好的消息,说明如果测试结果在周六/周日运行则无效.
用C#/ NUnit ......
Assert.That(
DateTime.Now.DayOfWeek != DayOfWeek.Sunday && DateTime.Now.DayOfWeek !=
DayOfWeek.Saturday, "This test cannot be run on Saturday or Sunday");
Run Code Online (Sandbox Code Playgroud)
试图嘲笑约会是否可行/可取?是否有其他策略来处理这种情况?
asp.net-mvc ×3
c# ×2
sql ×2
asp.net ×1
attributes ×1
datetime ×1
filter ×1
insert ×1
join ×1
lambda ×1
nhibernate ×1
open-source ×1
repository ×1
sharepoint ×1
single-responsibility-principle ×1
stsadm ×1
unit-testing ×1
views ×1
xml ×1