我正在做mvcmusicstore练习教程.我在为专辑管理器创建脚手架时注意到了一些事情(添加删除编辑).
我想优雅地编写代码,所以我正在寻找干净的方式来编写它.
仅供参考我正在使商店更通用:
专辑=项目
类型=类别
艺术家=品牌
以下是检索索引的方式(由MVC生成):
var items = db.Items.Include(i => i.Category).Include(i => i.Brand);
Run Code Online (Sandbox Code Playgroud)
以下是检索删除项的方法:
Item item = db.Items.Find(id);
Run Code Online (Sandbox Code Playgroud)
第一个带回所有项目并填充项目模型中的类别和品牌模型.第二个,没有填充类别和品牌.
我怎么能写第二个来做查找并填充里面的内容(最好是一行)...理论上 - 类似于:
Item item = db.Items.Find(id).Include(i => i.Category).Include(i => i.Brand);
Run Code Online (Sandbox Code Playgroud) 我正在建立一个MVC 3.0电子商务网站.我想避免在我的代码中粘贴try-catch块.
问题很简单 - 捕获网站上所有错误的好策略是什么?我想知道所有这些...所以我可以努力在网站上线后将该数量计算为0.我计划将每个错误写入记录器并发送给它.
我已经完成了关于在global.asax文件中捕获它的一些阅读...但我也读过它没有得到所有这些.
任何人有任何建议或能指出我的方向吗?
当用户在我的网站上注册时,我不明白为什么我需要让他"等待"smtp通过才能获得激活电子邮件.
我决定以异步方式启动此代码,这是一次冒险.
让我们想象一下我有一个方法,例如:
private void SendTheMail() { // Stuff }
Run Code Online (Sandbox Code Playgroud)
我的第一个虽然是线程.我这样做了:
Emailer mailer = new Emailer();
Thread emailThread = new Thread(() => mailer.SendTheMail());
emailThread.Start();
Run Code Online (Sandbox Code Playgroud)
这工作......直到我决定测试它的错误处理能力.我故意破坏了我的web.config中的SMTP服务器地址并尝试了它.可怕的结果是IIS基本上BARFED与w3wp.exe上的未处理的异常错误(这是一个Windows错误!多么极端......)ELMAH(我的错误记录器)没有捕获它并且IIS重新启动所以网站上的任何人都有他们的会话被删除了.完全不可接受的结果!
我的下一个想法是,对异步代表进行一些研究.这看起来效果更好,因为在异步委托中处理异常(与上面的线程示例不同).但是,我担心如果我做错了或者我可能导致内存泄漏.
这是我正在做的事情:
Emailer mailer = new Emailer();
AsyncMethodCaller caller = new AsyncMethodCaller(mailer.SendMailInSeperateThread);
caller.BeginInvoke(message, email.EmailId, null, null);
// Never EndInvoke...
Run Code Online (Sandbox Code Playgroud)
我这样做了吗?
我正准备SSL cert
在我的主机上安装一个.
这是我的理解(并纠正我,如果我错了......):
一旦托管人员安装证书,我将能够浏览我的网站Http
或Https
(没有什么能阻止我继续使用Http)?
我唯一需要做的就是添加逻辑(在MVC的情况下,控制器属性/过滤器)来强制我选择的某些页面重定向到Https
(例如,[RequiresHttps]
谨慎地添加属性).
我是否必须担心做这些事情以确保我使用SSL
得当?我不确定我是否需要改变与逻辑有关的东西:
饼干
PayPal Express集成
此外,我计划[RequiresHttps]
仅添加购物车,结帐,登录,帐户和管理页面.我希望保留我的产品浏览/购物页面,Http
因为我听说有更多的使用开销Https
.这是正常/可接受/好吗?
还有一个问题......我知道ASP.NET以Auth cookie的形式存储一些登录信息.用户可以在Https
页面中登录,但是可以返回并在Http
页面中浏览吗?我想知道这是否会造成安全漏洞,因为用户已登录并Http
再次浏览.这会破坏使用的重点SSL
吗?
我在这方面有点新意......所以请帮助我们.
我正在构建一个与paypal集成的电子商务网站.
我们采取多种货币,所以我想确保(出于会计原因)我正确地执行货币转换的任何数学.
在将货币转换*乘以原始货币之后,我总是在小数点后面有大量的尾随数字.
有没有标准的方法来做到这一点?我应该截断还是圆?如果舍入1/1000小数将影响舍入1/100十进制,我是否需要多次舍入?
我应该做的事情如下:
Math.Round(Math.Round(x, 3), 2)
Run Code Online (Sandbox Code Playgroud)
我一直无法找到关于如何做到的好信息(希望美国和欧洲是一样的).
我在提琴手上注意到[RequireHttps]状态代码302重定向而不是301.我不确定这有多大意义......
如果你说的是控制器[RequireHttps],那么你永远不会希望人们去访问那个页面的Http版本.那么为什么不是永久重定向...告诉搜索引擎"请将您的链接永久更新到此页面的https版本".
如果这是有道理的,我是对的,有没有办法将其更改为301重定向?
我对版本号完全感到困惑.我找到了显示API版本82.0的文档以及此版本中所做的更改:
但是,当我在这里使用集成向导时(对于C#/ ASP.NET):
https://www.paypal-labs.com/integrationwizard/ecpaypal/main.php
...它为版本"2.3"创建了一个paypal函数...没有接近版本"82.0"的地方.
有什么不同?除版本号外,它们似乎使用相同的API.如果存在差异,我在哪里可以找到关于版本2.3的API的文档?
这是我在做什么:
List<Category> categories =
db.Categories.Include("SubCategories").OrderBy(c => c.Order).ToList();
Run Code Online (Sandbox Code Playgroud)
我的类别表上有一列称为“订单”,该列仅包含一个整数,该整数为表提供了某种排序顺序。
我的“ SubCategories”表上有同一列...
我想知道在我的子类别表上添加排序的最简单解决方案……
List<Category> categories =
db.Categories.Include("SubCategories").OrderBy(c => c.Order)
.ThenBy(c => c.SubCategories as x => x.Order).ToList();
Run Code Online (Sandbox Code Playgroud)
我想将其保持为这种LINQ格式...(方法格式)...
请记住,我正在MVC中工作,需要将其作为模型返回到视图。由于AnonymousTypes,我一直遇到错误的麻烦...
我正在寻找一个新的angular指令,用于将输入的ngmodel值与其他值进行比较,并检查它们是否相等.
如果它们相等,我希望此输入有效.否则,无效.
<div ng-repeat="one in many">
<ng-form name="somethingToValidate">
<input type="text" ng-model="one.userTypedText"
required mustbeequalto="one.someOtherValue" />
</ng-form>
</div>
Run Code Online (Sandbox Code Playgroud)
这是完成后使用的"mustbeequalto"指令的一个例子.
1)请注意{{one.someOtherValue}}可以随时更改,因此该指令必须了解此值的双向绑定特性.
2)我将在ng-repeat中使用它,因此它应该足够聪明,只能在包含它的特定ng-form的范围内工作.
我想我需要一个验证指令,但如果您认为有更好/更优雅的方式,请告知.我已经尝试创建这个指令并且失败了.
我正在使用 ASP.NET MVC 6(.net 核心)。有了它,我正在使用内置的外部登录逻辑来对 Facebook 进行身份验证。
我对其进行了修改,以便不是在同一窗口中进行身份验证,而是启动一个弹出窗口并在那里进行身份验证。成功后,弹出窗口会自行关闭并告诉我的主窗口重定向。这一切都有效。
但是,我想使用 Facebook 登录页面的“较小/迷你”版本。这可以在这里看到:https : //www.facebook.com/login.php?display=popup
“display=popup”是控制它的东西。
我不知道如何在我的 C# 代码中注入这个 kvp。我在哪里可以做?
app.UseFacebookAuthentication(new FacebookOptions
{
// was hoping for something here... tried to stick it into the authorizationurl but then i end up with 2 question marks and it fails
AppId = "blah",
AppSecret = "blah"
});
Run Code Online (Sandbox Code Playgroud)
[AllowAnonymous]
public IActionResult ExternalLogin(string provider, string returnUrl = null)
{
var redirectUrl = Url.Action("ExternalLoginCallback", "Account", new { ReturnUrl = returnUrl });
var properties = _signInManager.ConfigureExternalAuthenticationProperties(provider, redirectUrl); …
Run Code Online (Sandbox Code Playgroud)asp.net-mvc ×5
c# ×4
paypal ×2
angularjs ×1
asp.net ×1
asp.net-core ×1
asynchronous ×1
currency ×1
decimal ×1
email ×1
facebook ×1
linq ×1
oauth-2.0 ×1
rounding ×1
ssl ×1
validation ×1