我在我的项目中使用MVC 3,我看到一种非常奇怪的行为.
我正在尝试为我的模型上的特定值创建一个隐藏字段,问题是由于某种原因,字段上设置的值与模型中的值不对应.
例如
我有这个代码,就像测试一样:
<%:Html.Hidden("Step2", Model.Step) %>
<%:Html.HiddenFor(m => m.Step) %>
Run Code Online (Sandbox Code Playgroud)
我认为两个隐藏的字段都具有相同的值.我所做的是,第一次显示View时将值设置为1,然后在提交后我将Model字段的值增加1.
因此,第一次渲染页面时,两个控件的值都是1,但第二次渲染的值是:
<input id="Step2" name="Step2" type="hidden" value="2" />
<input id="Step" name="Step" type="hidden" value="1" />
Run Code Online (Sandbox Code Playgroud)
如您所见,第一个值是正确的,但第二个值似乎与我第一次显示View时相同.
我错过了什么?*For Html助手是否以某种方式缓存值?如果是这样,我该如何禁用此缓存?
谢谢你的帮助.
我在这里已经多次看到过这个问题,但是没有一个问题可以接受:
ASP.NET MVC @ Url.Action包括当前路由数据
ASP.NET MVC隐式添加路由值
基本上我有一个名为Group的动作方法的Controller,它有一个不接收参数的重载并显示一个元素列表,另一个接收一个id并显示该组的详细信息.
如果我做这样的事情:
Url.Action("Group", "Groups");
Run Code Online (Sandbox Code Playgroud)
从网站的主页面(/)它返回一个这样的网址:
"mysite.com/Groups/Group"
Run Code Online (Sandbox Code Playgroud)
没关系现在,如果站点的当前地址是/ Groups/Group/1并且我调用相同的方法
Url.Action("Group", "Groups");
Run Code Online (Sandbox Code Playgroud)
返回的网址是这样的:
"mysite.com/Groups/Group/1"
Run Code Online (Sandbox Code Playgroud)
它会在生成URL时自动为当前页面添加路由值.即使我这样生成URL:
Url.Action("Group", "Groups", null);
Run Code Online (Sandbox Code Playgroud)
因此,明确指定我不想要任何路由值,生成的URL是相同的.要获取我想要的地址,我必须将路由值显式设置为空字符串,如下所示:
Url.Action("Group", "Groups", new {id=""});
Run Code Online (Sandbox Code Playgroud)
这将生成以下URL:
"mysite.com/Groups/Group"
Run Code Online (Sandbox Code Playgroud)
我的问题是,为什么会发生这种情况?如果我没有设置任何路由值,则不应将它们添加到生成的URL中.
我想知道在定义nvarchar(max)类型的列时是否有任何缺点,而不是给它一个(更小的)最大大小.
我在某处读到,如果列值超过4?KB,剩余数据将被添加到"溢出"区域,这没关系.
我正在创建一个表格,其中大部分时间文本都是几行,但我想知道设置下限是否有任何优势,然后添加验证以避免违反该限制.
使用nvarchar(max)列创建索引是否有任何限制,或者是否需要在大小限制上添加限制?
谢谢!
我有一个actionmethod返回一个文件,只有一个参数(一个id).
例如
public ActionResult Icon(long id)
{
return File(Server.MapPath("~/Content/Images/image" + id + ".png"), "image/png");
}
Run Code Online (Sandbox Code Playgroud)
我希望浏览器在我第一次访问它时自动缓存此映像,以便下次不必下载所有数据.
我尝试过使用OutputCacheAttribute之类的东西,并在响应上手动设置标题.即:
[OutputCache(Duration = 360000)]
Run Code Online (Sandbox Code Playgroud)
要么
Response.Cache.SetCacheability(HttpCacheability.Public);
Response.Cache.SetExpires(Cache.NoAbsoluteExpiration);
Run Code Online (Sandbox Code Playgroud)
但是每次我在浏览器上点击F5时,图像仍会加载(我在Chrome和IE上尝试).(我知道每次都会加载它,因为如果我更改了图像,它也会在浏览器中更改).
我看到HTTP响应有一些显然应该工作的标题:
Cache-Control:public,max-age = 360000
内容长度:39317
内容类型:图像/ PNG
日期:2012年1月31日星期二23:20:57 GMT
到期日:2012年2月5日,星期日03:20:56 GMT
最后修改时间:2012年1月31日星期二23:20:56 GMT
但请求标头有这个:
附注:无缓存
有关如何做到这一点的任何想法?
非常感谢
我正在使用Jersey/Java创建一个REST服务器,我发现了一个奇怪的行为.
我在服务器上有一个方法,它返回一个对象数组作为Json
@GET
@Path("/files")
@Produces(MediaType.APPLICATION_JSON)
public Object getFiles() throws Exception{
DatabaseManager db = new DatabaseManager();
FileInfo[] result = db.getFiles();
return result;
}
Run Code Online (Sandbox Code Playgroud)
代码正确执行,数据返回给客户端(jQuery ajax调用).问题是如果"result"数组有一个元素或多个元素,则返回数据的格式会发生变化.
回复一个元素:
{"fileInfo":{"fileName":"weather.arff","id":"10"}}
Run Code Online (Sandbox Code Playgroud)
回应有两个要素:
{"fileInfo":[{"fileName":"weather.arff","id":"10"},{"fileName":"supermarket.arff","id":"11"}]}
Run Code Online (Sandbox Code Playgroud)
如您所见,在第一个场景中,返回对象的"fileInfo"属性的值是一个对象,在第二种情况下,值是一个数组.我究竟做错了什么?第一种情况不应该返回这样的东西:
{"fileInfo":[{"fileName":"weather.arff","id":"10"}]}
Run Code Online (Sandbox Code Playgroud)
即一个内部有一个对象的数组?
我知道我可以在客户端检测到这一点,但它似乎是一个非常丑陋的黑客.
谢谢你的时间.
我相信当我创建一个identity列时,它会自动编入索引,但我并不是100%肯定.
我应该为identity列创建索引,还是自动创建?
我有一个包含多个项目的Visual Studio 2010解决方案.其中一个项目被设置为默认项目,但我想默认更改它.
我知道我可以右键单击我想成为启动项目的项目并选择"Set as StartUp project",但此设置将存储在用户的文件(.slo和.user文件)中.
作为公司策略,我们不检查源控制系统中的这些文件,因此当另一个用户打开解决方案时,它将具有不同的项目作为启动对象.
有没有其他方法来设置这些值?像.sln或.proj文件上的设置?
谢谢
我正在尝试使用x.509证书签署XML文件,我可以使用私钥对文档进行签名,然后使用CheckSignature方法(它具有接收证书作为参数的重载)来验证签名.
问题是验证签名的用户必须拥有证书,我担心的是,如果用户拥有证书,那么他可以访问私钥,据我所知,这是私有的,应该只对用户可用谁签字.
我错过了什么?
谢谢你的帮助.
c# xml digital-certificate digital-signature x509certificate2
我开始使用.Net中的动态对象,我无法弄清楚如何做某事.
我有一个继承自DynamicObject的类,我重写了TryInvokeMember方法.
例如
class MyCustomDynamicClass : DynamicObject
{
public override bool TryInvokeMember(InvokeMemberBinder binder, object[] args, out object result)
{
// I want to know here the type of the generic argument
}
}
Run Code Online (Sandbox Code Playgroud)
在该方法中,我想知道调用中泛型参数的类型(如果有的话).
例如,如果我调用以下代码,我想在动态对象的覆盖方法中获取System.Boolean和System.Int32的值
dynamic myObject = new MyCustomDynamicClass();
myObject.SomeMethod<bool>("arg");
myObject.SomeOtherMethod<int>("arg");
Run Code Online (Sandbox Code Playgroud)
目前,如果我在覆盖方法中放置一个断点,我可以得到被调用方法的名称("SomeMethod"和"SomeOtherMethod",以及参数的值,但不是泛型类型).
我怎样才能获得这些价值?
谢谢!
我有一个看起来像这样的动作方法:
public ActionResult Index(string message)
{
if (message != null)
{
ViewBag.Message = message;
}
return View();
}
Run Code Online (Sandbox Code Playgroud)
发生的事情是,对此请求的URL将如下所示:
www.mysite.com/controller/?message=Hello%20world
Run Code Online (Sandbox Code Playgroud)
但我希望它只是看起来
www.mysite.com/controller/
Run Code Online (Sandbox Code Playgroud)
有没有办法删除actionmethod中的查询字符串?