带有主干视图的ASP.NET MVC 3路由

时间:2013-11-12 01:18:48

标签: javascript asp.net-mvc backbone.js

我是网络新手,我正在努力了解当前项目会发生什么。对于我们的单页应用程序之一,Controller会返回整个区域的单个视图。

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

在实际的Admin.cshtml中,我们创建了一个骨干路由器,该路由器针对该部分页面进行了初始化,并具有该单页面应用程序部分的不同视图。我的问题是,我想在路线上创建一个动作

admin/import/upload

那怎么样?我不想实际返回一个View,但我希望在该路由被命中时调用一个函数来验证上传的文件并返回有关该文件的JSON信息。

1 个答案:

答案 0 :(得分:0)

您需要定义一个具有上传文件属性的模型,它应该是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);
}