最近我的重点是创建一个可以托管第三方MVC插件的ASP.NET MVC应用程序.理想情况下,这些插件的开发将遵循以下规则:
经过一番研究后,我想出了以下几种方法来实现这一点,每种方法各有优缺点.
工作流程
PreApplicationStartMethodAttribute,MEF或主机项目中的基本组件参考(如果可能).Area主机内的插件.好处
PreApplicationStartMethodAttribute,项目引用)之前和应用程序启动之后(MEF),将程序集包含到主机App Domain中很简单缺点
结论
这是最简单的方法,但它也是最不安全的方法.它基本上消除了允许不受信任的开发人员创建插件的可能性,因为这些插件将具有与宿主应用程序相同的信任级别(这意味着如果宿主应用程序可以执行诸如System.IO.File.Delete插件之类的方法)
这种方法旨在允许创建可以沙箱化为自己的MVC插件,AppDomains并由主机通过System.Addin库使用.
结构体
在主机中设置路由,以确定正在处理的URL是否针对插件.可能有这样的模式example.com/p/{plugin}/{controller}/{action}/{id}
具有上述模式的所有路由都映射到具有模块路由操作的主机控制器.该操作会查看任何给定的路由,并根据段确定处理请求的相应插件{plugin}.
插件视图是一个接收器/发送器对象,充当插件控制器的网关.它有一个名为AcceptRequest的方法,它RequestContext从主机接收a ,并返回一个ActionResult.
插件管道包含可以串行化RequestContext并ActionResult跨管道隔离边界传输的适配器.
执行流程
匹配插件的路由并调用插件路由控制器.
控制器将所需的插件加载到它自己的插件中AppDomain并调用AcceptRequest,通过RequestContext(通过管道序列化)
AcceptRequest接收上下文并根据该请求确定要执行的适当控制器(使用自定义控制器工厂).
一旦控制器完成执行请求,它就会ActionResult向接收器对象返回一个接收器对象,然后将该接收器对象 …
我想在打开的 Excel 文档中设置文本的前景色以写入文本。
为此我尝试过:
var stylesheet1 = spreadSheet.WorkbookPart.WorkbookStylesPart.Stylesheet;
Fills fills1 = new Fills() { Count = (UInt32Value)5U };
Fill fill5 = new Fill();
PatternFill patternFill5 = new PatternFill() { PatternType = PatternValues.Solid };
ForegroundColor foregroundColor3 = new ForegroundColor() { Rgb = "#FF0000" };
patternFill5.Append(foregroundColor3);
fill5.Append(patternFill5);
fills1.Append(fill5);
stylesheet1.Fills.Append(fills1);
var fid = stylesheet1.Fills.Count++;
wbsp.Stylesheet = stylesheet1;
Row excelRow;
excelRow = new Row();
excelRow.RowIndex = 0;
Cell cell = new Cell()
{
//create the cell reference of format A1, B2 etc
//CellReference = …Run Code Online (Sandbox Code Playgroud) 我有一个单选按钮,我想默认默认选中第一项.我该怎么做呢?下面是单选按钮的源代码.
<asp:RadioButtonList ID="radRiskLevel" runat="server" RepeatDirection="Horizontal">
<asp:ListItem Value="High">High</asp:ListItem>
<asp:ListItem Value="Mid">Mid</asp:ListItem>
<asp:ListItem Value="Low">Low</asp:ListItem>
</asp:RadioButtonList>
Run Code Online (Sandbox Code Playgroud) 我必须创建一个存储过程来使用 MySQL 中的 LIMIT 获取分页数据。它在我的本地数据库中运行良好,但在服务器上不起作用。所以我尝试在 google 中搜索并获得解决方案“升级服务器上的 phpmyadmin 版本”,但这是不可能的。因此,在没有 LIMIT 或 OFFSET 的情况下创建分页的任何替代方法。?
在我尝试过的代码下方。
CREATE DEFINER=`root`@`localhost` PROCEDURE `LazyLoadScope`(IN ClientId INT,IN StartIndex INT,IN Count INT)
BEGIN
DECLARE LowerBound INT;
DECLARE UpperBound INT;
DECLARE rownum INT;
SET LowerBound = ((StartIndex - 1) * Count) + 1;
SET UpperBound = ((StartIndex - 1) * Count) + Count;
SELECT scopeid,scopename,clientid,scope,createddate,ViewDate,IsLocked
FROM scopemaster as sm inner join clientmaster cm on cm.clientid=sm.clientid
where cm.userid=ClientId order by sm.ViewDate desc LIMIT LowerBound,UpperBound ;
END
Run Code Online (Sandbox Code Playgroud) asp.net ×2
c# ×2
.net ×1
appdomain ×1
asp.net-mvc ×1
excel ×1
mysql ×1
openxml ×1
pagination ×1
plugins ×1