Javascript ASP.NET MVC 3带主干视图的路由
我对网络还很陌生,我正在努力了解我们当前项目的进展情况。对于我们的一个单页应用程序,控制器返回整个区域的单个视图Javascript ASP.NET MVC 3带主干视图的路由,javascript,c#,asp.net-mvc,backbone.js,Javascript,C#,Asp.net Mvc,Backbone.js,我对网络还很陌生,我正在努力了解我们当前项目的进展情况。对于我们的一个单页应用程序,控制器返回整个区域的单个视图 [HttpGet] [Url("admin")] public virtual ActionResult Index() { return View(Admin); } 在实际的Admin.cshtml中,我们创建了一个主干路由器,该路由器针对页面的该部分进行初始化,并具有针对单个页面应用部分的不同视图。我的问题是,我想在路线上创建一个操作 admin/import/upl
[HttpGet]
[Url("admin")]
public virtual ActionResult Index()
{
return View(Admin);
}
在实际的Admin.cshtml中,我们创建了一个主干路由器,该路由器针对页面的该部分进行初始化,并具有针对单个页面应用部分的不同视图。我的问题是,我想在路线上创建一个操作
admin/import/upload
那看起来怎么样?我不想实际返回视图,但我想在该路由被点击时调用一个函数来验证上传的文件并返回关于该文件的JSON信息。您需要为上传的文件定义一个具有属性的模型,就像这样,它的类型应该是
HttpPostedFileBase
(function() {
window.App = {
Router: {}
View: {}
};
App.Router = Backbone.Router.extend({
routes: {
'*AreaName/admin/import/upload': 'upload'
},
upload: function() {
var upload= new App.View.upload();
},
});
$(document).ready(function() {
window.routes = new App.Router;
Backbone.history.start({ pushState: true });
});
})();
public class UploadModel
{
[Required(ErrorMessage="Please choose a file to upload.")]
public HttpPostedFileBase Photo { get; set; }
}
然后,您需要执行接受指定模型的操作,并返回JavaScript
,而不是View
public ActionResult Upload(UploadModel model)
{
//only continue if the model is valid (i.e. all the required fields have been set)
if (ModelState.IsValid)
{
string json = "";//build your JSON here
//return the JSON as a javascript response (with the correct headers, etc)
return JavaScript(json);
}
return View(model);
}
当然,如果您使用主干网来交付视图,那么您需要将主干网与.net代码分开,并使用API。