2016-04-11 13 views
1

サイトのページにカスケードドロップダウンリストを追加しようとしています。私はhttp://www.mikesdotnetting.com/article/196/webmatrix-jquery-cascading-dropdown-listsで提示された例に従ってきました。唯一の変更は、私のアプリケーションに合うように変数名を変更したことと、特定の状況(つまり、新しいレコードの作成)に機能が存在するようにするためです。関連するコードの周りの文。javascript/jqueryからcshtmlファイルをどのように呼び出す必要がありますか?

2番目のドロップダウンリストはページロード時に(期待通りに)無効になっていますが、1番目のドロップダウンリスト項目の1つが選択されたときに有効になりません。

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

が正しいフォルダに見ていない:

私の疑惑は、私はおそらくラインに、正しくGetClients.cshtml(マイクのGetProducts.cshtmlの私の変化)を呼び出していないよということです。

理想的な世界では、Razorチルダ(〜)を使用して、サーバーバージョンまたはローカルホストの使用に関係なく正しく表示される完全なパスを強制できます。しかし、それはJavaScriptのオプションではないようです。

GetClients.cshtmlは、私が制御しようとしているJSコード、HTMLドロップダウンリストなどを含むcshtmlファイルと同じフォルダにあります。誰かが私に、上記のコードが「隣のドア」のファイルを参照するのか、参照しないのかを教えてもらえますか?もしそうでなければ、私は上記のコード行をどのように修正するべきですか?

答えて

0

GetClients.cshtmlファイルがルートの下にあるフォルダにある場合、そのフォルダをgetJSONメソッドに渡すURLに含める必要があります。たとえば、のは、あなたの構造は、このようなものですと言ってみましょう:あなたがgetJSONメソッドに渡す

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

urlは/folder/getclientsプラスあなたが渡す追加URLData /クエリ文字列でなければなりません。

+0

ありがとうマイク!私は丁寧にあなたのブログページに少しコメントを追加することを提案できますか?私はかなりの数の人々があなたのコードのバージョンが機能していない理由について同様に困惑しているのを見ました。そして、私のように、あなたが書いたことに盲目的に従ったからです。 (さようなら、私はあなたの答えを正しいものとしてチェックしてきましたが、肯定的な評判を得ると表示されます。) –

1

Javascriptから直接ビューを呼び出すことはできません。そのビューを返すASP.NET MVCコントローラでアクションを作成するだけです。

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

とJSでそれを呼び出す:あなたは直接かみそりビューにアクセスすることはありません

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

、あなたはアクションメソッド経由でアクセスします。

パスが正しくないため、問題が404になっていると思います。ブラウザコンソールを開くと、404エラーが表示されるはずです。

htmlヘルパーメソッドを使用して、アクションメソッドの正しい相対パスを生成します。かみそりビューエンジンは、このビューを実行する

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

は、ヘルパーメソッドを呼び出して、JavaScriptの変数に(アクション・メソッドへの正しい相対パスである)、そのメソッド呼び出しの出力を使用します。このソリューションは現在のページ/ URLに関係なく機能します。

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メソッドがあるコントローラ名に置き換えます。 – Shyju

+0

OK、私は愚かであることをお詫びしますが、コントローラ名は何ですか? –

関連する問題