2016-04-11 42 views
1

我正在尝试将级联下拉列表添加到我的网站上的一个页面。我遵循http://www.mikesdotnetting.com/article/196/webmatrix-jquery-cascading-dropdown-lists提供的例子,唯一的变化是我已经改变了变量名称以适应我的应用程序,因为我只想在某些情况下存在功能(即创建新记录),所以有一个if有关代码的声明。如何从javascript/jquery调用cshtml文件?

虽然我的第二个下拉列表在页面加载禁用(如预期),它不会成为当第一个下拉列表中的项目之一被选中启用。

我怀疑的是,我没有打电话GetClients.cshtml(我的麦克的GetProducts.cshtml的变化)正确,可能是由于线路:

$.getJSON('/GetClients/' + ActivityID, function (clients) { 

不看在正确的文件夹。

在一个理想的世界,我可以用剃刀符号(〜)来强制将正确对待,无论使用服务器版或本地主机的完整路径。但是,这似乎并不是JavaScript中的一个选项。

GetClients.cshtml位于同一文件夹中包含的JS代码,HTML下拉列表等,我试图控制CSHTML文件。有人能让我知道上面的代码是否引用了“隔壁”文件,如果不是,我应该修改上面的代码行?

回答

0

如果您GetClients.cshtml文件根目录下的文件夹中,您需要在您传递到的getJSON方法的URL该文件夹。例如,假设你的结构是这样的:

root 
    folder 
     GetClients.cshtml 
     CallingPage.cshtml 
    Default.cshtml 
    etc 

你传递给方法的getJSON的网址应该是/folder/getclients加上你要传递的任何其他URLData /查询字符串。

+0

谢谢迈克!我可以礼貌地建议你在你的博客页面上添加一点评论吗?我已经看到很多人对你的代码版本不起作用感到困惑,我怀疑这是因为他们和我一样,盲目地关注你写的东西。 (顺便说一句,我选择了正确的答案,但只有当我获得一点正面声誉时才会显示。) –

1

你不能直接从Javascript调用视图,这就是为什么在ASP.NET MVC控制器中创建返回该视图的Action。

public MyController{ 
    public ActionResult GetMyCoolCshtmlFile(){ 
     return View("pathToMyCoolCshtml.cshtml"); 
    } 
} 

,并调用它的JS:

$.get("/my/GetMyCoolCshtmlFile").done(function(yourMarkup){doWhatYouWantWithYourMarkup(yourMarkup);}) 
1

你不会直接访问Razor视图,您将通过一个操作方法访问它。

我认为问题在于你得到了404,因为路径不正确。如果你打开你的浏览器控制台,你应该能够看到一个404错误。

使用Url.Action HTML辅助方法来生成你的操作方法正确的相对路径。

var url="@Url.Action("GetClients","YourcontrollerName")";  
$.getJSON(url + ActivityID, function (clients) { }); 

当剃刀视图引擎执行该视图中,将调用辅助方法和使用该方法调用的输出(其是对动作方法正确的相对路径)的JavaScript变量。无论您当前的网页/网址如何,此解决方案都可以正常工作。

假设你有一个名为GetClients的操作方法,它接受一个id和JSON格式返回客户。

public ActionResult Getclients(int id) 
{ 
    // to do : Return a list of Clients as json 
} 

上述代码将在剃刀视图内工作。如果您的代码位于extenal JavaScript文件中,请使用此post中介绍的解决方案。

+0

谢谢你,但你的答案似乎假设我使用Visual Studio和MVC。我不是。我使用WebMatrix,并且根据MVC原则,我不会分割我的页面。你的第一个建议看起来是可行的,但因为我不认为我有一个'控制器',我正在努力解决我应该用作“YourcontrollerName”的问题。你能帮我解决吗? –

+0

用您拥有Getclients方法的控制器名称替换yourController名称。 – Shyju

+0

好的,我很抱歉是哑巴,但是什么是控制器名称? –

相关问题