如果我们有一个母版页和一个内容页面.那么内容页面@Page指令看起来像
<%@ Page Language="C#" MasterPageFile="~/Site1.Master" .... />
Run Code Online (Sandbox Code Playgroud)
所以,为了访问内容页面中的母版页控件,我们应该使用
<%@ MasterType VirtualPath="~/Site1.Master" %>
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是为什么我们在@page指令中定义了这个内容页面在主页面中时使用@MasterType指令(这里是Site1.Master)
该视图假设显示一个超链接列表,每个超链接指向一个外部URL.目标是让用户单击其中一个链接并让浏览器打开包含所选URL的新选项卡.目前我有以下标记:
@Html.ActionLink("SomeSite", "http://subdomain.mydomain.com/SomeSite")
Run Code Online (Sandbox Code Playgroud)
此标记产生:
http://localhost:58980/AccessInstance/http%3a/subdomain.mydomain.com/SomeSite
Run Code Online (Sandbox Code Playgroud)
代替 :
http://subdomain.mydomain.com/SomeSite
Run Code Online (Sandbox Code Playgroud)
我可以在标记中更改哪些内容以使其按预期工作?
我第一次玩MVC 4来查看与MVC 3相比已经更改/添加/等等的内容.
首先,我创建了一个空白的MVC 4 Web应用程序,并从头开始构建.
我注意到的第一件事与MVC 4不同的是,以下web.config设置对网页的可访问性没有影响:
<configuration>
<location path="">
<system.web>
<authorization>
<deny users="?"/>
</authorization>
</system.web>
</location>
.....
</configuration>
Run Code Online (Sandbox Code Playgroud)
回到MVC 3,上面的授权设置将拒绝所有匿名用户访问站点内的任何内容.但是,如果我将相同的设置添加到MVC4 Web.config文件中,则匿名者可以自由选择他/她选择的URL.
我在MVC 4中需要做什么来锁定所有路径,就像我在MVC 3中那样?
asp.net-mvc forms-authentication web-config asp.net-authorization
我有一个统一的运行代码.
现在我想使用Moq对ASP-MVC进行单元测试.在global.asax的代码中,我有以下内容:
IUnityContainer container = new UnityContainer();
container.RegisterType<IFoo, Foo>(new InjectionConstructor("xxx"));
Run Code Online (Sandbox Code Playgroud)
现在我用Moq编写了测试代码:
IUnityContainer container = new UnityContainer();
var mockFoo = new Mock<IFoo>();
Run Code Online (Sandbox Code Playgroud)
container.RegisterType<IFoo, mockFoo) >(new InjectionConstructor("xxx"));
但这不起作用.
错误:类型'Moq.Mock'不能在泛型类型或方法'Microsoft.Practices.Unity.UnityContainerExtensions.RegisterType中用作类型参数'TTo'...没有从'Moq.Mock'到内容的隐式引用转换'IFoo的'
目前,我使用RazorEngine v2.1作为后台进程的一部分,该进程发送模板化电子邮件(数千个).为了加快速度,模板使用md5 sum作为名称进行编译.这使得当模板被更改时,它被重新编译,并且使用该模板的所有电子邮件都能够使用相同的编译模板.我在列表中跟踪已编译模板的名称,以便我知道何时再次调用编译(并执行其他一些操作).
问题:我发现经过很长一段时间后,经过大量的模板修改,所有这些缓存的编译模板可能仍然在内存中,因为它看起来像是存储在一个dynamic.对于这个可能一次运行几个月而不重启的特定进程,如果所有以前版本的模板仍然存在,这可能构成严重的内存泄漏.
问题:是否有办法取消缓存旧模板,以便它们不再闲置在dynamic?
例如,如果我能够自己保留已编译的模板对象并在我想使用它们时将它们传递到RazorEngine中,我可以决定何时将它们抛出并消除内存泄漏.然而,如果RazorEngine已经解决了这个问题,那么了解它也会很方便,因为我在互联网上找不到很多关于这个特定问题的引用.关于为什么应该使用编译模板来减少内存使用量的原因有很多,但我很难找到任何关于在长期应用程序中累积的大量未使用的编译模板的信息.
编辑:我刚刚读了一些关于缓存是如何工作的,如果使用不同的模板传入相同的名称,它将重新缓存它并丢弃旧的.然而,这里的问题仍然存在,因为随着时间的推移,将添加和删除电子邮件,并且随着时间的推移,所有旧的删除的电子邮件仍将存在(即使它不会存储模板的每个版本的副本).
var jqxhr = $.getJSON( "example.json", function() {
console.log( "success" );
})
.done(function() {
console.log( "second success" );
})
.fail(function() {
console.log( "error" );
})
.always(function() {
console.log( "complete" );
});
Run Code Online (Sandbox Code Playgroud)
成功函数(作为第二个参数传递)与done()函数之间的区别是什么?他们似乎是一回事.
我转而使用新的ASP.NET Identity 2.我实际上使用的是Microsoft ASP.NET Identity Samples 2.0.0-beta2.
任何人都可以告诉我在哪里以及如何修改代码,以便它存储用户的名字和姓氏以及用户详细信息.这现在是否是索赔的一部分,如果是,我怎么能添加它?
我假设我需要在这里添加这个帐户控制器中的寄存器方法:
if (ModelState.IsValid)
{
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id);
var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme);
await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking this link: <a href=\"" + callbackUrl + "\">link</a>");
ViewBag.Link = callbackUrl;
return View("DisplayEmail");
} …Run Code Online (Sandbox Code Playgroud) public enum VehicleData
{
Dodge = 15001,
BMW = 15002,
Toyota = 15003
}
Run Code Online (Sandbox Code Playgroud)
我想在字符串数组中得到值15001,15002,15003,如下所示:
string[] arr = { "15001", "15002", "15003" };
Run Code Online (Sandbox Code Playgroud)
我试过下面的命令,但这给了我一些名字而不是值.
string[] aaa = (string[]) Enum.GetNames(typeof(VehicleData));
Run Code Online (Sandbox Code Playgroud)
我也尝试过,string[] aaa = (string[]) Enum.GetValues(typeof(VehicleData));但也没有用.
有什么建议?
SQL Server如果不存在,我想制作用于创建数据库的脚本。
IF NOT EXISTS(SELECT * FROM sys.databases WHERE name = 'DataBase')
BEGIN
CREATE DATABASE DataBase
USE DataBase
CREATE TABLE TableName (
Id INT PRIMARY KEY IDENTITY (1, 1),
Name VARCHAR(100)
)
--more tables here
--some procedures here too
END
Run Code Online (Sandbox Code Playgroud)
从上面的代码我得到这个错误:
消息 911,级别 16,状态 1,第 5 行数据库“DataBase”不存在。确保正确输入名称。
当数据库不存在时,如何使用表和过程创建数据库?我想在一个查询中完成
我正在尝试确定如何将/ News/5的路由映射到我的新闻控制器.
这是我的NewsController:
public class NewsController : BaseController
{
//
// GET: /News
public ActionResult Index(int id)
{
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
这是我的Global.asax.cs规则:
routes.MapRoute(
"News", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "News", action = "Index", id = -1 } // Parameter defaults
);
Run Code Online (Sandbox Code Playgroud)
我尝试去/ News/5但是我收到了资源未找到错误,但是当进入/ News/Index/5时它有效吗?
我尝试过,{controller}/{id}但这只是产生了同样的问题.
谢谢!
c# ×4
asp.net-mvc ×3
asp.net ×2
enums ×1
getjson ×1
html-helper ×1
jquery ×1
linq ×1
master-pages ×1
moq ×1
razor ×1
razorengine ×1
routes ×1
service ×1
sql ×1
sql-server ×1
web-config ×1