ASP.NET MVC 3路由与 Backbone.js 视图

gwo2fgha  于 2022-11-10  发布在  .NET
关注(0)|答案(2)|浏览(133)

我是一个网络新手,正在尝试了解我们当前的项目发生了什么。对于我们的一个单页应用程序,控制器返回整个区域的单个视图。

[HttpGet]
[Url("admin")]
public virtual ActionResult Index()
{
    return View(Admin);
}

在实际的Admin.cshtml中,我们创建了一个 Backbone.js 路由器,它为页面的该部分进行初始化,并为单个页面的应用程序部分提供不同的视图。

admin/import/upload

我并不想实际返回一个视图,但是我想在该路径被命中时调用一个函数来验证上传的文件并返回有关该文件的JSON信息。

cyej8jka

cyej8jka1#

您需要为上传的文件定义一个具有如下属性的模型,它的类型应为HttpPostedFileBase

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);
}
h43kikqp

h43kikqp2#

(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 });
    });

})();

相关问题