我正在使用ASP.NET-MVC,并从我的MVC操作返回JSON或HTML。
我遇到过一些情况,我需要同时返回JSON和HTML。例如,我可能更新了购物车,并且需要返回HTML表示形式以及更新的JS对象模型。
我在SO上发现了很多有关何时返回哪种类型的响应的问题,但是没有人讨论如何同时返回两种响应。
有可靠的方法吗?必须在所有浏览器上都能正常工作。
如果没有一个好的方法,我只需要发出2个请求来获取HTML,然后获取JSON。
MicrosoftMvcJQueryValidation.js ASP.NET MVC 2用于客户端验证.
有这个文件的问题只是没有正常工作,并想知道我是否有错误的版本.
我使用的版本来自期货来源.
MicrosoftMvcJQueryValidation.js
5,626 bytes
11/17/09 10:43:12am
Run Code Online (Sandbox Code Playgroud)
我认为我的版本错误有两个原因:
1)我实际上必须调用此代码才能使验证例程正常工作.这是因为现在嵌入的默认客户端验证功能FormContext.cs是Sys.Mvc.FormValidation.enableClientValidation.
ViewContext.FormContext.ClientValidationFunction = "EnableClientValidation";
Run Code Online (Sandbox Code Playgroud)
2)jquery.validate.js中有一些代码可以执行以下操作:
this.settings.errorPlacement
? this.settings.errorPlacement(label, $(element) )
: label.insertAfter(element);
Run Code Online (Sandbox Code Playgroud)
这调用此函数MicrosoftMvcJQueryValidation.js:
errorPlacement: function(error, element) {
var messageSpan = fieldToMessageMappings[element.attr("name")];
$(messageSpan).empty();
$(messageSpan).removeClass("field-validation-valid");
$(messageSpan).addClass("field-validation-error");
error.removeClass("input-validation-error");
error.attr("_for_validation_message", messageSpan);
error.appendTo(messageSpan);
},
Run Code Online (Sandbox Code Playgroud)
问题是元素已被jQuery.validatejQuery $(element)表达式包装.
因此element.attr("name")未定义,但element[0].attr("name")有效.
我MicrosoftMvcJQueryValidation.js从微软的网站上下载了期货.`
我找不到任何其他MicrosoftMvcJQueryValidation版本 - 但我敢肯定必须有一个版本.有人可以帮忙吗?
有人在将域映射到MVC区域方面有经验吗?
这是我们的情况:
旧系统(仍然有效但很快将重定向到新商店):
www.example.com - 我们的主要网站,我们发送流量
store.example.com - 我们的商店网站是一个完全独立的网站,在谷歌索引
新系统:
www.example.com - 与以前相同的网站
www.example.com/store - 新商店网站 - 内置于ASP.NET MVC区域
由于商店是一个单独的域,谷歌会在搜索结果中为其指定一个单独的条目.我想在将来保留这个好处,但想知道是否有一个很好的方法将域(store.example.com)映射到MVC区域,或者它是否会比它的价值更麻烦.
PS.我不是想保留现有的索引 - 它是一个完全独立的商店,所以这是不可能的.我只想重定向到新商店中的相应页面.我只是试图不为了SEO目的而失去两个域的好处.
有没有办法从url字符串中获取RouteData?
我有loginlUrl作为查询字符串参数的登录表单.我的路线定义为:{languageCode}/{controller}/{action}
在行动方法中LogIn(string returlUrl),returlUrl类似于"en/home/contacts"等.我需要更改languagePart ai不想使用string.Replace,因为路线可能在将来发生变化.
谢谢.
当我切换到XHTML Strict DOCTYPE时,我的图像间距有问题.
下面的代码 - 使用Yahoo的重置样式表来消除所有默认的浏览器填充 - 在下面的两个图像之间留下大约4个像素的间隙,但仅当我使用严格的doctype时.为什么是这样?
这只是Chrome和Firefox中的一个问题.IE不会在两个图像之间显示单个像素.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<link rel="stylesheet" type="text/css"
href="http://yui.yahooapis.com/2.6.0/build/reset/reset-min.css">
</head>
<body>
<div><img src="http://www.catfacts.org/cat-facts.jpg" border="0"/></div>
<div><img src="http://www.catfacts.org/cat-facts.jpg" border="0"/></div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 给出以下代码:
var EmployeeXPosition = from emp in context.WTDEmployee
from ep in emp.WTDEmployeeXOXPosition
select new {
EmployeeId = emp.id,
FullNameAndPosition = string.Format("{0} {1} : {2}", emp.FirstName, emp.LastName, ep.WTDPosition.Position)
};
Run Code Online (Sandbox Code Playgroud)
它给出了错误:
LINQ to Entities无法识别方法'System.String Format(System.String,System.Object,System.Object,System.Object)'方法,并且此方法无法转换为商店表达式.
果然我能做到:
emp.FirstName+" "+ emp.LastName +" : " + ep.WTDPosition.Position
Run Code Online (Sandbox Code Playgroud)
但它看起来很难看,有关如何使用的任何建议string.Format吗?
我有一个视频,我需要立即开始播放我的页面加载(这是容易的部分).
我还可以将视频控制栏设置为"自动隐藏",但我希望它最初是不可见的,因为它在视频开始时看起来非常混乱.
(我也是我自己的按钮,对应于视频中的"部分",但我仍然希望人们看到进度条,如果它们翻转).
我试过看JWPlayer和Flowplayer都有自动隐藏控制条,但它们都在启动时显示.
有没有办法不在这些玩家或其他玩家中最初显示控制栏?
我基于我从服务器获取的JSON字符串向JQ Mobile表添加行.
刷新后第一次进入页面时,没有添加任何样式,但是每次都可以正常工作.
有没有办法像列表视图一样刷新/初始化表格?
下面的代码是我添加行的地方:
$.each(result, function() {
var imgString;
if(result[i]["status"] == 'Y') {
imgString = '<img src= images/checkMark.png height=\"40\" width=\"40\" align=\"middle\">';
} else {
imgString = '';
}
$('#pickupTable > tbody:last').append('<tr><td class=\"tableRow10\">' + imgString +
'<td class=\"tableRow80\"><a><button class=\"selectPickup\" pickupCode = \"'+
result[i]["id"] + '\"> '+ result[i]["address"] +'</button></a></td></tr>');
i++;
});
$('#pickupTable > tfoot:last').append('<tr><td colspan="5">Total Pick Ups: '
+result.length + '</td></tr>');
Run Code Online (Sandbox Code Playgroud) 如果您查看以下示例oData Feed,您将看到包含"子"项的导航属性,以告诉您要遵循的URL:
http://services.odata.org/OData/OData.svc/Suppliers?$format=json
例如,供应商0具有产品的导航属性.这链接到该供应商的产品列表.
http://services.odata.org/OData/OData.svc/Suppliers(0)/Products?$format=json
我正在努力做同样的事情ODataConventionModelBuilder,EntitySetController<Product>所以当我要求oData/Product(0)它时会告诉我产品的'功能':
我像这样创建我的模型(基于GetImplicitEdmModel示例)
// odata
ODataModelBuilder modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<RRStoreDB.Models.Product>("Product");
modelBuilder.EntitySet<RRStoreDB.Models.ProductFeature>("ProductFeature");
Microsoft.Data.Edm.IEdmModel model = modelBuilder.GetEdmModel();
config.Routes.MapODataRoute("ODataRoute", "odata", model);
Run Code Online (Sandbox Code Playgroud)
我为WebAPI创建了一个控制器:
public class ProductController : EntitySetController<Product, int>
{
RRStoreDBContext _db = new RRStoreDBContext();
[Queryable]
public override IQueryable<DProduct> Get()
{
return _db.Products.AsQueryable();
}
public ICollection<ProductFeature> GetProductFeatures(int key)
{
Product product = _db.Products.FirstOrDefault(p => p.ProductId == key);
if (product == null)
{
throw new HttpResponseException(HttpStatusCode.NotFound);
}
return product.ProductFeatures;
}
}
Run Code Online (Sandbox Code Playgroud)
当我实际调用我的子属性的URL时,它工作并给我正确的功能列表: …
有时需要一秒或更长时间才能从浏览器连接到我的SignalR服务器 - 即使在本地运行时也是如此.我认为websockets是快速的!
asp.net-mvc ×3
c# ×1
css ×1
doctype ×1
flowplayer ×1
html-table ×1
iis ×1
javascript ×1
json ×1
jwplayer ×1
linq ×1
odata ×1
routing ×1
seo ×1
signalr ×1
xhtml ×1