我有一个控制器调用视图.在视图中有一个PartialView叫做be @Html.Partial("ViewName", model).this的工作正常.
但是controller我希望在viewbag中添加一些东西,这些东西很难放入view模型中,然后传递给视图.主视图访问没有问题ViewBag,但在PartialView它没有返回任何东西.
是否有可能ViewBag在这种情况下使用或者我应该将这些数据"破解"到我传递给视图的模型中(我传递给PartialView的模型,以及我传递给第一个PartialView嵌套的模型PartialView)?
我看过以下两个可访问的布尔值:
System.Web.Mvc.Controller.User.Identity.IsAuthenticatedSystem.Web.Mvc.Controller.Request.IsAuthenticated这些之间有区别吗?他们似乎都做同样的事情所以我不确定使用哪个.
我想做的是:
@if (User.Identity.IsAuthenticated) {
if (User.IsInRole("Admin")) {
@Html.ActionLink("Admin", "AdminController")
}
}
Run Code Online (Sandbox Code Playgroud)
要么
@if (Request.IsAuthenticated) {
if (User.IsInRole("Admin")) {
@Html.ActionLink("Admin", "AdminController")
}
}
Run Code Online (Sandbox Code Playgroud)
上述任何一种都可以同样好用吗?
我有一个控制器,只应在加载特定参数时请求授权.例如,当参数ID为8时.
我想到了使用这样的自定义验证属性:
public class MyAuthorizeAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
if (/* Action's inputparameter ID = 8 */)
{
return base.AuthorizeCore(httpContext);
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
我的动作看起来像这样(不是很有趣)
[MyAuthorize]
public ActionResult Protected(int id)
{
/* custom logic for setting the viewmodel from the id parameter */
return View(viewmodel);
}
Run Code Online (Sandbox Code Playgroud)
问题是您可以看到我不知道如何在authorize属性中检查该ID参数.你能帮我解决一下吗?
写作
@Url.Content("~/Something/Something.html")
Run Code Online (Sandbox Code Playgroud)
用剃刀渲染
/AppFolder/Something/Something.html
Run Code Online (Sandbox Code Playgroud)
有没有办法像http://www.something.com/AppFolder/Something/Something.html没有恶劣的黑客一样呈现完整的URL ?(比如将协议和域存储在其中AppConfig,并将字符串连接到它)
是否有类似@Url.FullPath("~/asdf/asdf")或类似的帮手?
这更像是一个理论问题.
我目前正在使用ComponentModel.DataAnnotations检查MVC 3验证,一切都在自动运行,特别是在客户端.
某种程度上会检查这些属性,并为验证生成javascript(或html5属性,如果使用不显眼的模式),它可以工作.
我的问题是什么生成客户端javascript以及如何访问和修改它?例如,我想稍微处理给定的dataannotation属性,或处理自定义属性(我发现我可以从ValidationAttribute派生它们,但可能由于某些原因我不想要).
有人可以向我解释一下真正发生了什么吗?(或者链接到好的解释也会很好,因为我只找到了实际使用数据注释的教程)
编辑:此外,从ValidationAttribute派生,客户端验证不会自动运行.为什么?
有很多教程==,===所以请不要指导我学习基础教程,我的问题更具体:
例如,http://www.w3schools.com/jsref/jsref_obj_string.asp声明:
句法:
var txt = new String("string");
// or more simply:
var txt = "string";
Run Code Online (Sandbox Code Playgroud)
很好,但是这个呢?
alert(new String("a") == new String("a")); // false
alert("a" == "a"); // true
var a = new String("a");
var b = new String("a");
alert(a == b); // false
var c = "a";
var d = "a";
alert(c == d); // true
alert(c === d); // true
alert (a === c); // false
Run Code Online (Sandbox Code Playgroud)
当然,new String()无论如何都没有人打电话,但它是否因为平等失败而 …
介绍:
我在asp.net mvc环境中尝试LESS.
我使用dotless进行服务器端处理(我不想使用客户端处理,尤其是发布整个项目).
我必须根据不同的事物(例如一天中的时间)应用不同颜色方案的设计.
在这种情况下感觉不那么强大,因为设计一个参数化的css并且只在每个主题的文件开头改变10个变量真的令人振奋.
问题:
但我需要以某种方式从外部参数更改颜色主题.
思路:
首先我认为像style.less?theme = fuschia这样的URL参数会很好,但我发现无法解析这样的东西.
然后我认为制作一个非常短的blue.less,green.less,orange.less只包含声明的颜色变量,并且在每个变量中都包含main.less将是一个可靠的解决方案.
我没有机会尝试第二种解决方案,但我认为这是一个很好的时机,可以就最强大的方式寻求建议.
问题又出现了:我想从外面控制我文件中的一些东西.
会有很多问题需要澄清,所以我会尝试用数字标记它们,以便更容易回应它.
最近我一直在研究javascript.有一个主题是"一切都是对象".
在我的"javascript解释"中,这意味着在其原型链的开头,一切都有"对象".它是否正确?
但是,我们的基本类型(string,number,boolean,null,undefined)?他们是对象吗?我可以打个电话"aaa".length.这是如何运作的?
函数是根据此实现[[Call]]的对象 .那是什么意思?(我认为这是关于fun.call(这个,arg1)的东西,但帮助我理解这一点.
还有typeof运营商.我之前已将其与MDN联系起来,但有些事情令人困惑.
typeof "aaa" === "string"和typeof String("aaa") === "string".这似乎是可以预料的,但String("aaa")会返回什么?我猜它以某种方式解析输入并从中返回一个字符串原语.它是否正确?
typeof new String("aaa") === "object"什么?请向我解释其原型链.我在哪个原型和哪个原型上有"aaa"原始字符串值?它有什么不同typeof String("aaa")?
我已经阅读并观看了很多关于这个主题的内容,我认为我需要澄清这些内容.
同样在你的答案中,如果你链接一个外部资源,请总结它的重要部分,并说明它的含义,因为我一直在阅读ecmascript规范,它们很长:).
此外,如果javascript的版本有所不同,请说明.
这是代码......
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var address = "new delhi";
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var latitude = results[0].geometry.location.lat();
var longitude = results[0].geometry.location.lng();
alert(latitude);
alert(longitude);
map.setCenter(new GLatLng(latitude, longitude));
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
var latlng = new google.maps.LatLng(latitude, longitude);
var mapOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}
});
google.maps.event.addDomListener(window, …Run Code Online (Sandbox Code Playgroud) 我对asp.net中可能的cachedependencies有点疑惑,我不知道如何使用它们.
我想以某种方式向HttpRuntime.Cache添加项目,如果我更改缓存中的其他元素,则元素应该无效.依赖关系应该由密钥定义.
我想要一个这样的函数:
public MyObject LoadFromCache(string itemDescriptor, IEnumerable<string> dependencies)
{
var ret = HttpRuntime.Cache[itemDescriptor] as MyObject;
if (ret == null)
{
ret = LoadFromDataBase(itemDescriptor);
//this is the part I'm not able to figure out. Adding more than one dependency items.
var dep = new CacheDependency();
dependencies.ForEach(o => dep.SomeHowAdd(o));
HttpRuntime.Cache.Add(
itemDescriptor,
ret,
dependencies,
System.Web.Caching.Cache.NoAbsoluteExpiration,
System.Web.Caching.Cache.NoSlidingExpiration,
Caching.CacheItemPriority.Normal,
null
);
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
帮助我解决这个问题.