我正在考虑为我正在使用的整个MVC 4项目使用基本控制器.我在网上发现了相互矛盾的观点,并不确定它是否违反最佳做法,或者仅仅是个人偏好问题.
这是一个stackoverflow帖子,说不要这样做
这篇 文章已经展示了如何做到这一点,就像没有它的有害影响一样.在这里和这里,他们解释了它的用法,没有人真正指出这是不好的做法,或者可能导致任何问题.
那么在MVC 4项目中使用几个基本控制器的观点究竟是什么呢?好?坏?
编辑
我还想指出,我使用基本控制器的直接目标是,我可以在一个控制器中完成授权,这样所有控制器都不需要具有Authorize属性.我将为每个角色创建单独的基本控制器.由于角色永远不会改变,我永远不需要为另一个角色创建另一个基本控制器.您如何看待这种设计控制器的方式?
谢谢你的时间.
访问者设计模式是一种将算法与其操作的对象结构分离的方法.这是它的官方定义.我试图弄清楚这是如何不破坏封装的.如果说例如我对不同类型的银行账户[保存/固定/当前]有不同类型的类实现抽象类帐户,我应该将计算利息方法作为抽象方法放在抽象帐户类中,还是我发送帐户?键入访问者实现并在那里计算?
方法1:访客实施是否应负责计算不同帐户类型的利息?
public interface IInterestVisitor
{
void GetInterest(Savings AccountType);
void GetInterest(Fixed AccountType);
void GetInterest(Current AccountType);
}
Run Code Online (Sandbox Code Playgroud)
方法2:或者Account类的实现者应该这样做吗?
public abstract class Account
{
public abstract void AcceptCalculateInterestVisitor(IInterestVisitor iv);
public abstract int CalculateInterestAmount();
}
Run Code Online (Sandbox Code Playgroud)
如果我使用方法1,即上面实现IInterestVisitor的访问者实现,那么计算兴趣的工作将被委托给访问者类.使用这种方法,如果我添加其他帐户类型,那么每次新帐户出现时我都需要修改访问者实施.
但是,如果我将兴趣计算位留给方法2中的抽象Account类实现,那么在我看来[ 纠正我,如果我在这里错了 ]我没有打破封装.此外,修改的代码较少,因为我所做的只是添加一个新类,并让访问者实现如下所示的接口
public interface IInterestVisitor
{
void GetInterest(Account AccountType);
}
public class InterestVisitor : IInterestVisitor
{
public void GetInterest(Account AccountType)
{
int i = AccountType.CalculateInterestAmount();
Console.WriteLine(i);
}
}
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,使用方法2的兴趣访问者类不需要修改.方法1是否打破了封装?方法2仍然可以称为访客模式吗?
谢谢阅读...
我有一个表单,我上传多个文件,有几个文本框和一些复选框与每个上传的文件相关联.我已经看到了上传多个文件的示例,其中actionresult签名是这样的:
[HttpPost]
public ActionResult Upload(IEnumerable<HttpPostedFileBase> fileUpload)
Run Code Online (Sandbox Code Playgroud)
但是,我无法找到任何可以上传多个文件的示例,其中我的actionresult签名是这样的:
[HttpPost]
public ActionResult Upload(MyViewModel vm)
Run Code Online (Sandbox Code Playgroud)
我想要发布这个视图模型的原因是因为我认为它比使用FormCollection变量更干净,因为我希望每个文件都被上传,并且添加的数据及其相关的文本框将通过List<FileUploadPacket>其中的一部分组合在一起视图模型
UPDATE
My View模型如下:
public class EmployeeVM
{
public int EmployeeID {get ;set;}
public string EmpName {get ;set;}
//Other properties
public List<FileUploadPacket> FileUploadPackets { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
FileUploadPacket类,其属性类型为HttpPostedFileBase
public class FileUploadPacket
{
public int FileID {get ;set;}
public string UserEnteredDesc {get ;set;}
//some more other properties
public HttpPostedFileBase UpFile { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的view.aspx的代码片段如下
<%: Html.TextBoxFor(model => model.EmpName, new { maxLength = 50 })%> …Run Code Online (Sandbox Code Playgroud) 我已经阅读了有关新Azure产品的信息,并试图弄清楚它是什么.我一直在寻找全国各地的文件似乎有大约是不再有效,如框架的更多信息这一个在这里.他们在4.8,5.23,12.13中谈论的大部分内容都不再有效.
到目前为止,据我所知,移动服务是在过去提供的.这将很快停止,App Services将接管.App Services是包含Api应用程序,移动应用程序和Web应用程序的顶级服务.它是否正确?
我很困惑为什么我们有Api应用程序和移动应用程序.他们不做同样的事情吗?现在我们还有Web应用程序,它们仅限于与UI相关的应用程序吗?唯一容易理解的东西和没有类似其他产品的东西是Logic应用程序.这似乎只能在Azure门户上完成.Visual Studio没有项目模板.是否需要安装一些东西才能在我的visual studio中创建逻辑应用程序?
此外,在Visual Studio 2015中,WEB节点下的Asp.Net Web应用程序项目模板与CLOUD节点之间有什么区别?他们似乎都持有相同的模板.
为什么我们在Cloud节点下有Azure Mobile App和Azure Mobile Service,如下所示.

..也是在选择之后 Asp.Net Web Application

从表面上看,两者看起来都一样.人们需要了解的是否有任何微妙的差异?另外,为什么所有这些选项也不适用于Asp.Net 5模板?随着所有变化的发生,将最新版本开发的应用程序投入生产是一个好主意吗?
谢谢你的任何指示.
我正在使用VS2015与Xamarin一起创建一个多平台项目,该项目可以显示启动画面,然后在webview中加载网页.这是我的项目结构.我正在使用PCL项目类型如下:
TheApp(便携式)
-WebPageHoster.Xaml //Contains a WebView control
-WebPageHoster.Xaml.cs //sets the WebView controls source property to load a webpage
-App.Xaml
-App.Xaml.cs
Run Code Online (Sandbox Code Playgroud)
TheApp.Droid
/Resources/drawable/splashlogo.png
/Resources/drawable/icon3.png
/Resources/values/Styles.xml
-MainActivity.cs
-SplashActivity.cs
Run Code Online (Sandbox Code Playgroud)
TheApp.iOS
TheApp.WindowsPhone(Windows Phone 8.1)
这是代码 Styles.xml
<?xml version="1.0" encoding="utf-8" ?>
<resources>
<style name="Theme.Splash" parent="android:Theme">
<item name="android:windowBackground">@drawable/splashlogo</item>
<item name="android:windowNoTitle">true</item>
</style>
</resources>
Run Code Online (Sandbox Code Playgroud)
SplashActivity.cs
[Activity(MainLauncher = true, NoHistory = true, Theme = "@style/Theme.Splash", Icon = "@drawable/icon3")]
public class SplashActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
var intent = new Intent(this, typeof(MainActivity));
StartActivity(intent);
Finish(); …Run Code Online (Sandbox Code Playgroud) splash-screen visual-studio xamarin.android xamarin visual-studio-2015
我试图以编程方式创建一个SSIS包,其中包含从同一数据库中的表A到表B的简单数据流.我正在使用这里给出的例子.该包被创建并保存到dtsx文件中,但是当我在visual studio中打开它时,我看到源表和目标表尚未被选中.
我还想在到达目的地之前插入转换任务.
好吧,我设法选择了源表和目标表,任务甚至成功运行.结果我需要
(a)为源和目的地分别使用一个oleDB连接[我不喜欢这种方式; 我只想使用一个连接]
(b)在目的地SetComponentProperty("AccessMode",3)中将Accessmode设置为3 ,等同于Table或View - 快速加载.
有什么文件在这个地方.我能找到的只是SetComponentProperty所做的,而不是它可以采取的所有参数.例如.除了"AccessMode"之外我还可以放在哪里?,第二个参数3或2或1代表什么?
仍试图映射绰号.STOCK:PipelineTask表示DataFlow任务.什么是绰号...复制专栏?
我想以下面的xml格式将二进制文件发送到.net c#组件
<BinaryFileString fileType='pdf'>
<!--binary file data string here-->
</BinaryFileString>
Run Code Online (Sandbox Code Playgroud)
在被调用的组件中,我将使用上面的xml字符串并将BinaryFileString标记中接收的二进制字符串转换为filetype =''属性指定的文件.文件类型可以是doc/pdf/xls/rtf
我在调用应用程序中有代码从要发送的文件中取出字节.如何准备将其与包裹在其周围的xml标签一起发送?我希望应用程序向组件发送字符串而不是字节流.这是因为我无法通过查看字节流来解密文件类型[pdf/doc/xls].因此具有filetype属性的xml字符串.有什么想法吗?
提取下面的字节的方法
FileStream fs = new FileStream(_filePath, FileMode.Open, FileAccess.Read);
using (Stream input = fs)
{
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{}
}
return buffer;
Run Code Online (Sandbox Code Playgroud)
谢谢.
只是为了澄清为什么我使用xml字符串而不是在我的组件上设置属性.实际上我的调用应用程序试图模拟Siebel如何调用我的组件. http://download.oracle.com/docs/cd/E05553_01/books/eScript/eScript_JSReference244.html#wp1014380 我不确定Siebel是否可以根据需要设置我的组件属性.所以我正在研究它在xml中发送数据的角度.
有没有关于开发Metro风格的silverlight应用程序的指导?如何设计UI以匹配WP7的地铁外观.顺便说一句,Windows 8的用户界面和用户体验是如此,我认为未来我们如何为未来版本的操作系统开发应用程序可能会改变为或多或少的"地铁".
所以我要问的是,如果有人知道任何资源或有任何想法如何使用当前可用的silverlight控件来实现这种外观和感觉.是否有任何计划改变控制以匹配开箱即用的UX,更本地?
silverlight-toolkit expression-blend silverlight-4.0 microsoft-metro windows-8
我正处于中型asp.net c#项目的开端,并且具有应用程序性能要求,能够支持大约400多个并发用户.
在构建满足此类性能和可用性标准的应用程序时,我需要记住哪些事项?该页面需要在5秒内完成.我计划将应用程序和数据库放在不同的物理机器上.从编码和应用程序分层的角度来看: -
如果这个问题太开放,我道歉.关于如何进行的任何提示或想法?
谢谢你的时间.
我有一个Linq查询返回到var类型myQry
var myQry = from .....
Run Code Online (Sandbox Code Playgroud)
这是一个很大的linq返回我需要进一步过滤的所有记录.在我的一个if条件中,我有一个像这样运行的过滤器来检查日期.我需要检查名称是否包含输入的名称,并确切地匹配生日.
我试过这个编译和运行,但没有正常工作
myQry.Where(x => x.FirstName.Contains(strName) && DateTime.Compare( x.BirthDt, searchDt)>=0).ToList()
Run Code Online (Sandbox Code Playgroud)
然后我尝试了这个,它抛出异常"DbArithmeticExpression参数必须有一个数字公共类型"
myQry.Where(x => x.FirstName.Contains(strName) && (x.BirthDt- searchDt).Days == 0).ToList();
Run Code Online (Sandbox Code Playgroud)
对于这种情况,当我在查询中使用where子句时,进行日期比较的最佳方法是什么?LinQ查询的where子句中不允许进行哪些操作?
谢谢你的时间...
c# ×4
.net ×2
asp.net-mvc ×2
asp.net ×1
azure ×1
binary ×1
comparison ×1
dataflowtask ×1
datetime ×1
file-upload ×1
filestream ×1
iis ×1
inheritance ×1
linq-to-sql ×1
performance ×1
ssis ×1
viewmodel ×1
windows-8 ×1
xamarin ×1