小编Bla*_*ise的帖子

MVC4 WebAPI的正确架构是什么?

我运行了一些搜索,但没有找到这个问题的可用答案.

好的,我的MVC 3架构是这样的:

- Project.EDM (contains only the entity framework edmx file and its .tt and .cs entity classes)
- Project.DAL (contains IXxxRepositiory and XxxRepository where CRUD is performed on the entity classes)
- Project.Web (the MVC3 project. Controllers transfer data from ViewModels into entity models and call the CRUD functions in the DAL repositories.)
Run Code Online (Sandbox Code Playgroud)

WebApiMVC4出现如此大的吸引力,因为我们将能够从其他应用程序调用的CRUD操作.我们都喜欢这个主意.

但是我发现的现有示例在MVC4项目中有CRUD操作ApiController.我习惯将这些操作放入一个单独的DAL项目中.推荐的选择是什么?我们还能有一个单独的DAL课吗?您如何设计专家的架构?

感谢您提供所有有用的建议.

architecture asp.net-mvc-4 asp.net-web-api

5
推荐指数
1
解决办法
4297
查看次数

如何将表单中的复选框序列化为Json数据

我们知道在MVC中,a CheckBoxFor将生成一个checkbox带a value="true"和a hidden带a value=false.两个输入控件将共享相同的名称.

这是非常合理的,因为如果未选中该框,表单将能够POST一个假值.当复选框返回true时,模型绑定器将忽略隐藏的输入.

但是现在我已经覆盖了表单提交事件,以便将表单数据发送到JSON格式的WebAPI控制器.

序列化表单数据时,没有机制来正确解析复选框和隐藏之间的关系.因此,当取消选中时,它会返回一个false,这没关系.但是当检查时,它返回一个{true, false}而不是true,因为该serializeArray()函数遍历每个input并且发现两个值变为同一个名称.

问题是:纠正它的最佳方法是什么?

checkbox asp.net-mvc json jsonserializer

5
推荐指数
1
解决办法
2446
查看次数

如何判断 ACCDB 文件的版本?

我有 Access 2010。但是每次我创建并打开新数据库时,标题栏都会显示 2007。当在其他人的 Access 2010 中打开相同的 accdb 文件时,它会显示(Access 2007-2010). 为什么会这样呢?

如何判断我的数据库是 2007 年还是 2010 年?

ms-access

5
推荐指数
2
解决办法
1万
查看次数

如何存储Web API访问令牌?

Stackflow中有一些类似的主题,但我发现它们都没有回答我的问题.

ASP.NET Web API 2就是我们现在使用的.我现在能够接受CORS来自我的WebAPI的身份验证请求.通过在Authorization标头(Bearer xxx)中发送的访问令牌,我能够访问受[Authorize]标签保护的资源.

问题是,如何在常规登录表单中实现类似于"记住我"复选框的功能?我们想要的是用户下次访问我们的网页时不需要再次登录.仅一个会话的访问令牌?WebAPI2如何设置令牌的到期时间?我们如何在会话中保存一些信息或使用本地存储来存储此类身份验证信息?当我们在客户端存储此令牌时,我们是否需要某种加密来保护它?

你在实施这个"记住我"功能时有什么建议?

asp.net-web-api asp.net-web-api2

5
推荐指数
2
解决办法
3354
查看次数

如何首先在代码中按降序创建索引?

要按EmployeeCardNumber(文本)降序创建索引。

因此,sql脚本应类似于:

ALTER TABLE dbo.Employees ADD CONSTRAINT
IX_Employees_EmplyeeCardNumber UNIQUE CLUSTERED 
(
    EmployeeCardNumber DESC
)
Run Code Online (Sandbox Code Playgroud)

在中IndexAttribute,有一个Order属性,它是一个整数???

这是我的流利的api:

        var indexAttr = new IndexAttribute("IX_Employees_EmplyeeCardNumber")
        {
            IsClustered = true,
            IsUnique = true,
            Order = 1 // probably should be removed since we are using a composite key.
        };

        Property(c => c.EmployeeCardNumber)
            .HasColumnAnnotation("Index", new IndexAnnotation(indexAttr))
            .HasMaxLength(8)
            .IsRequired();
Run Code Online (Sandbox Code Playgroud)

因此,问题是,如何在此代码优先方法中定义“ DESC”?

entity-framework ef-code-first

5
推荐指数
0
解决办法
1074
查看次数

Entity Framework Code First 如何按降序创建索引?

在 Fluent API 中,我们可以在字段上指定索引:

var indexAttr = new IndexAttribute("IX_EmployeeNumber")
{
    IsClustered = true
};

Property(c => c.EmployeeNumber)
    .HasColumnAnnotation("Index", new IndexAnnotation(indexAttr ))
    .HasMaxLength(8)
    .IsRequired();
Run Code Online (Sandbox Code Playgroud)

之后Add-Migration,我们会得到这样的CreateIndex语句:

CreateIndex("dbo.Employees", "EmployeeNumber", clustered: true, name: "IX_EmployeeNumber");
Run Code Online (Sandbox Code Playgroud)

在a之后Update-Database,我们有一个像这样的sql:

CREATE CLUSTERED INDEX [IX_EmployeeNumber] ON [dbo].[Employees]
(
    [EmployeeNumber] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
GO
Run Code Online (Sandbox Code Playgroud)

我的问题是:如何按降序创建这个索引?就像是:

CREATE CLUSTERED INDEX [IX_EmployeeNumber] ON [dbo].[Employees]
(
    [EmployeeNumber] …
Run Code Online (Sandbox Code Playgroud)

entity-framework ef-code-first entity-framework-migrations

5
推荐指数
1
解决办法
6280
查看次数

电子邮件验证是否要求域部分包含点?

我注意到内置的浏览器验证<input type="email" />需要格式化xxx@xxx.只@需要角色.没有像点那样的点email@stackoverflow.com.

它与流行的jQuery.inputmask相同,email别名规则也不需要点.

我只是好奇.现在是忽略电子邮件验证中的点的标准方法吗?我没有在根级域名上看到任何电子邮件地址.忽略点的原因是什么?

email jquery html5 jquery-inputmask

5
推荐指数
1
解决办法
2281
查看次数

如何在量角器测试中使用browser.getCurrentUrl()?

今天我一直在努力使用这些Protractor代码:

element(by.linkText("People")).click();
browser.waitForAngular();        
var url = browser.getCurrentUrl();
...
Run Code Online (Sandbox Code Playgroud)

getCurrentUrlwaitForAngular()声明之后放置似乎总是失败.

错误输出太模糊了:

UnknownError:javascript错误:在等待结果时卸载文档

那么,点击超链接并检查新网址的正确方法是什么?


这是我的测试:

如果我getCurrentUrl()点击链接之前,

it('can visit people page', function () {
    var url = browser.getCurrentUrl();
    element(by.linkText("People")).click();
    expect(true).toBe(true);
});
Run Code Online (Sandbox Code Playgroud)

测试将通过.

如果我getCurrentUrl()点击链接后,

it('can visit people page', function () {
    var url = browser.getCurrentUrl();
    element(by.linkText("People")).click();
    expect(true).toBe(true);
    url = browser.getCurrentUrl();
});
Run Code Online (Sandbox Code Playgroud)

使用UnknownError上面的输出在Protractor中抛出错误.什么地方出了错?

javascript selenium angularjs selenium-webdriver protractor

5
推荐指数
1
解决办法
2万
查看次数

如何有选择地验证一些数据注释属性?

我的视图模型中有一些属性在保存时是可选的,但在提交时是必需的.总之,我们允许部分保存,但提交整个表单,我们确实希望确保所有必填字段都有值.

我现在能想到的唯一方法是:

操纵ModelState错误集合.

视图模型具有所有[Required]属性.如果请求是部分保存,则在进入控制器操作时ModelState.IsValid变为false.然后我运行所有ModelState(这是一个ICollection<KeyValuePair<string, ModelState>>)错误并删除[Required]属性引发的所有错误.

但是如果请求是提交整个表单,我不会干涉ModelState[Required]属性生效.

使用不同的视图模型进行部分保存和提交

这个更难看.一个视图模型将包含[Required]操作方法用于提交的所有属性.但是对于部分保存,我将表单数据发布到使用相同视图模型而没有所有[Required]属性的不同操作.

显然,我最终会遇到很多重复的代码/视图模型.

理想的解决方案

我一直在考虑是否可以[SubmitRequired]为这些必需的属性创建自定义数据注释属性.并且以某种方式使得验证在部分保存时忽略它,但在提交时则忽略.

仍然没有一个明确的线索.有人可以帮忙吗?谢谢.

c# asp.net asp.net-mvc model-binding data-annotations

5
推荐指数
1
解决办法
4260
查看次数

什么是“ AppOffline”,它可以阻止我的机器人应用程序发布到IIS Web服务器?

刚刚使用Bot Framework创建了一个应用程序,该应用程序是从此处下载的模板创建的:http : //aka.ms/bf-bc-vstemplate

它在测试仿真器中运行良好。但是当发布到IIS服务器时,出现此错误:

错误Web部署任务失败。((5/6/2016 3:03:54 PM)在远程计算机上处​​理请求时发生错误。

(5/6/2016 3:03:54 PM) An error occurred when the request was processed on the remote computer.
Exception has been thrown by the target of an invocation.
   at System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context)
   at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context)
   at System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder)
   at System.Runtime.Serialization.ObjectManager.DoFixups()
   at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage)
   at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream …
Run Code Online (Sandbox Code Playgroud)

iis botframework

5
推荐指数
2
解决办法
533
查看次数