2011-08-17 17 views
0

ここで何をしようとしているのは、文字列引数からjson URLを取得していることです。 マイビュー 私の見解名はAdmin /インデックスjqueryのrazor urlにURLを挿入するには

function blablasub(){ 

    submitter("ParentList", "ChildListTextArea", "~/Admin/DesignSubmit/", "ides", "productid"); 
} 

としたい以下の機能でこれらを使用してみてくださいです。

function submitter(chosenListBox, chosenTextBox, jsonurl, textparameter, listparameter) { 
    var ListBox = $("select#" + chosenListBox); 
    var ListBoxVal = $("select#" + chosenListBox + " option:selected").val(); 
    if (ListBoxVal == "" || ListBoxVal == 0) { 
     ListBox.css('background-color', '#FFBBBB'); 
    } else { 
     ListBox.css('background-color', 'white'); 

     var TextBox = $("#" + chosenTextBox); 
     var TextBoxVal = $("#" + chosenTextBox).val(); 
     if (TextBoxVal == "" || TextBoxVal == 0) { 
      $("#" + chosenTextBox).css('background-color', '#FFBBBB'); 
     } else { 
      TextBox.css('background-color', 'white'); 
      alert(ListBox.toString() + " - " + TextBox.toString() + " - " + '@Url.Content(" + jsonurl.toString() + ")' + " - " + textparameter.toString() + " - " + listparameter.toString() + " - Finito Baby"); 
      $.getJSON('@Url.Content(" + jsonurl.toString() + ")', { textparameter: TextBoxVal, listparameter: ListBoxVal }, function (data) { 
       clearitem("#" + chosenListBox); 
       $("#" + chosenListBox).removeAttr('disabled'); 
       $.each(data, function (i, c) { 
        $("#" + chosenListBox).append('<option value="' + c.Value + '">' + c.Text + '</option>'); 
       }) 
       $("#" + chosenListBox + " option:first").attr('selected', 'selected'); 
       $("#" + chosenListBox).change("#" + chosenListBox + "list"); 
      }) 
     } 
    } 
} 

どのように私は剃刀に文字列としてURLを注入することができます@Url.Content()

編集: マイコントローラー

私のコントローラ名がAdminController

public JsonResult ProductSubmit(string ipro, Product prod) 
    { 
     prod.name = ipro; 
     db.Products.InsertOnSubmit(prod); 
     db.SubmitChanges(); 

     int pro = Convert.ToInt32(db.Products.Where(x => x.name == ipro).Select(x => x.id).Single()); 
     IEnumerable<SelectListItem> Items = db.Products.Where(d => d.id == pro).AsEnumerable().Select(c => new SelectListItem() 
     { 
      Text = c.name, 
      Value = c.id.ToString() 
     }); 
     SelectList data = new SelectList(Items, "Value", "Text"); 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 

    public JsonResult DesignSubmit(string ides, Design des, int productId) 
    { 
     des.name = ides; 
     des.master_id = productId; 
     db.Designs.InsertOnSubmit(des); 
     db.SubmitChanges(); 
     IEnumerable<SelectListItem> Items = db.Designs.Where(x => x.master_id == productId).AsEnumerable().Select(c => new SelectListItem() 
     { 
      Text = c.name, 
      Value = c.id.ToString() 
     }); 
     SelectList data = new SelectList(Items, "Value", "Text"); 
     return Json(data, JsonRequestBehavior.AllowGet); 
    } 
+0

ここで 'blablasub'は定義されていますか? –

+0

私はその上に複雑すぎるものがあることを知っていますが、それはどうやって行うのが好きです。 私はちょうど文字列としていくつかの他の関数からURLを取得し、かみそりのURLに注入するポーズな方法を学びたい。 –

+0

blablasubは、ボタンによってトリガーされる別の関数として定義されています。 $(document).ready(function(){})にはありません。 –

答えて

1

Url.Contentメソッドが実行し、出力サーバー側です。このように、クライアント側であるurlのjavascript値は、かみそりファイルが解析されるときには存在しません。だから、私たちがする必要があるのは、がjavascriptが呼び出される前に実行されていることを確認することです。

あなたのblahblah関数があなたのビュー内にあると仮定します。 (上記のあなたのコメントに基づいて)

function blablasub(){         /*works this way..*/ 
    submitter("ParentList", "ChildListTextArea", '@Url.Content("~/Admin/DesignSubmit/")', "ides", "productid"); 
} 


$.getJSON(jsonurl, { textparameter: TextBoxVal, listparameter: ListBoxVal }, function (data) { 
... 
}); 
+0

うん、それはあなたの言うとおり。有難うございます。 –

関連する問題