1

我的问题有点类似于 How to get a response "stream" from an action in MVC3/Razor?

但我尝试了他们的方法但没有成功。

细节

我正在使用 MVC3、.net4、c#、

javascript 和第三方组件来打开文件。

我有一个viewStuff.js连接到一个ViewFile.aspx.

在我viewStuff.js

var component = 'code to initialize'

之前

我曾经将aspx页面连接到这个 javascript,并且它们运行良好

在我viewStuff.js

component.openFile("http://localhost:8080/ViewFile.aspx");

重定向到 aspx 页面

ViewFile.aspx.cs文件以a的形式返回与文件相关的数据HTTPResponse

  protected void Page_Load(object sender, EventArgs e)
        {
            this.Response.Clear();

            string stuff = "abcd";
            this.Response.Write(stuff);

            this.Response.End();
        }

现在

我想要做的就是将其替换aspxController将返回相同内容的。

在我的viewStuff.js我有

component.openFile("http://localhost:8080/ViewFile/Index");

Controller看起来像

public class ViewFileController: Controller{

   public ActionResult Index()
   {
     string stuff = "abcd";
     return stuff;
   }
}

我唯一的问题是我的 component.openFile() 方法无法 Controller使用 MVC URL。我一开始就有活动断点,Index()但它们永远不会被击中。

我不知道它是否
- URL
- MVC - URL 是方法而不是物理文件的事实

另外,我不确定如何解决 RouteConfig() 是否有帮助。

编辑:路线配置:-

routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }                    
            );

(如果需要,我可以获得更多详细信息。在投票之前让我知道)

4

1 回答 1

2

想到2种可能性

  1. ContentResult从您的控制器操作中返回 a :

    public class ViewFileController : Controller
    {
       public ActionResult Index()
       {
           string stuff = "abcd";
           return Content(stuff);
       }
    }
    
  2. 使用视图:

    public class ViewFileController : Controller
    {
       public ActionResult Index()
       {
           return View();
       }
    }
    

    在相应的 Index.cshtml 视图中,您可以放置​​您想要的任何标记。

http://localhost:8080/ViewFile/Index此外,在控制器中放置任何断点之前,请在浏览器地址栏中打开url,查看它是否返回正确和预期的数据。

于 2013-10-24T14:40:25.433 回答