2016-06-20 6 views
0

MVC5 Web Appを構築していて、Knockout.jsを使用して動的なページビューを作成したいとします。しかし、Knockout.Mappingは私のプロジェクトで正しく動作していないようです。Knockout.MappingをASP.NET Web Appで動作させるにはどうすればよいですか?

ご覧のとおり、Intellisenseはマッピングプラグインの提案をしていません(私は_reference.jsにプラグインのリファレンスを含めました)。そして、私はこの行を強制終了したときに書かれた2番目のアラートを表示することができません。

正しく動作させるには何か別の処理を行う必要がありますか?

@if (false) 
{ 
<script src = "~/Scripts/knockout-3.4.0.js" ></script > 
<script src = "~/Scripts/knockout.mapping-latest.js"></script > 
} 

<script type="text/javascript" src="@Url.Content("~/Scripts/knockout-3.4.0.js")"></script> 
<script type="text/javascript" src="@Url.Content("~/Scripts/knockout.mapping-latest.js")"></script> 

//~~body~~// 

<script type="text/javascript"> 
alert("1"); 
var json = '@Html.Raw(Json.Encode(Model))'; 
b = ko.mapping.fromJson(json); //"mapping" is not suggested when "ko." is put. 
//b = ko.mapping.fromJson(Model); //mistake at the original post 
ko.applyBindings(b); 
alert("2"); // not showed when the previous two lines is active. 
</script> 

Intellisense is not working

+0

@modelでページの先頭にモデルを設定しようとしませんでしたか? – Guto

+0

はい、私は "@model ..."をcshtmlの先頭にあるviewmodelを参照します。 –

+0

私はコードを間違えてしまい、スクリーンショットをアップロードしていないことがわかりました。私は元の行を残して、投稿を修正しました。混乱させて申し訳ありません。 –

答えて

0

フォローアップを遅らせるために申し訳ありません。最後に、私はそれが

<script src="~/Scripts/knockout-3.4.0.js"></script> 
<script src="~/Scripts/knockout.mapping-latest.js"></script>  

//~~body~~// 

@section scripts{ 
     <script src="~/Scripts/knockout-3.4.0.js"></script> 
     <script src="~/Scripts/knockout.mapping-latest.js"></script> 
} 

と_reference.jsでknockout.jsのコアライブラリの参照の後

/// <reference path="knockout.mapping-latest.js" /> 

を置くことによって示唆ショーを使用して作業します。

0

here利用可能なヘルプを見てみましょう。

私はあなたがあなたのマッピングを作成する必要があります例がこれですと思う:

ko.mapping.fromJS(@Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model))) 
+0

これは動作しません...私はNewtonsoftパッケージが正しくインストールされていることを確認しました。とにかく、ありがとうございます。 –

0

はこれを試してみてください。

var ViewModel = function() { 
    var self = this; 

    self.formData2 = ko.mapping.fromJS(@Html.Raw(Json.Encode(Model))); 
} 

とあなたのコントローラで:

public ActionResult Index() 
    { 

     return View(new ExecutivoViewModel()); 
    } 

私のViewModelクラス:

public class ExecutivoViewModel 
{ 
    public ExecutivoViewModel() { } 

    public ExecutivoViewModel(Executivo entidade) 
    { 
     this.ExecutivoId = entidade.ExecutivoId; 
     this.Nome = entidade.Nome; 
     this.Cargo = entidade.Cargo; 
     this.Inativo = entidade.Inativo; 
    } 

    [DisplayName("Executivo ID")] 
    [Required] 
    public int ExecutivoId { get; set; } 

    [DisplayName("Nome")] 
    [MaxLength(50)] 
    [Required] 
    public string Nome { get; set; } 

    [DisplayName("Cargo")] 
    [MaxLength(50)] 
    [Required] 
    public string Cargo { get; set; } 

    [DisplayName("Inativo")] 
    public bool Inativo { get; set; } 

enter image description here

+0

お返事ありがとうございます、私はすぐにあなたが提案したアプローチを試み、結果を更新します。 –

関連する問題