2011-12-30 22 views
0

グリッド内のデータベースからのノートを表示するタブのビューを返すActionResult TabNotesがあります。タブでPartialViewを返し、それが、これはそうでないリダイレクト使用してアクションの結果TabNotesに行くときのメモを保存した後、私は、しかし

return RedirectToAction("TabNotes", new { modelEntity = "Phrase", id = itemId}); 

バックのActionResult TabNotesにリダイレクトのActionResult CreateNote、するためのボタンでありますグリッドを表示します。 javascriptは次のエラーを返します。

Uncaught ReferenceError: $ is not defined (anonymous function) 
Uncaught ReferenceError: ko is not defined (anonymous function) 

これはActionResultに初めて渡されます。

[...] 
    Model.Grid.url = Url.Action("TabNoteData", new { id = Model.meta.entity, itemId = Model.meta.id.Value}); 
    } 

    return View("TabNotes", Model); 
} 

は、1回目と2回目のモデルにおける同一の入力値を与える:ブレークポイントのActionResult TabNotesの以下の部分を使用して。このエラーはどこから来ることができますか?

編集:

以下
prompt aborted by user 
throw Components.Exception...by user", Cr.NS_ERROR_NOT_AVAILABLE);  nsPrompter.js (regel 462  <Systeem> 

$ is not defined 
$(document).ready(function(){$('#tblTN...tes/44?cmd=refresh" id="TNPhrase44">  44?mod...=Phrase (regel 2) 

ko is not defined 
var viewModel=ko.mapping.fromJ...],"buttons":[],"PostAction":null}});   44?mod...=Phrase (regel 12) 

のJavaScriptで、コード

@model test.Web.Framework.Areas.Administration.Models.TabNotesModel 
@using (UI.DocumentReadyScript()) 
{ 

    if (Model.meta.id.HasValue) 
    { 
     UI.jQuery("#tbl" + Model.meta.modelname).flexigrid(Model.Grid); 
    } 
} 
<form method="post" action="@Url.Action("TabNotes", new { cmd = "refresh" })" id="@Model.meta.modelname"> 
<div class="ui-state-highlight ui-corner-all highlight" data-bind="visible: meta.message"> 
    <span class="ui-icon ui-icon-info"></span><strong data-bind="text: meta.message"> 
    </strong> 
</div> 
@using (UI.BeginBlock("Administation.TabNotes", UI.Label("Notes", "Notes").ToString(), test.Web.Framework.Core.enumIcons.pencil, false, false)) 
{ 
    <table id="@("tbl" + Model.meta.modelname)"> 
    </table> 
} 
</form> 
<script type="text/javascript"> 
    (function() { 
     var viewModel=ko.mapping.fromJS(@Html.Raw(UI.JavascriptEncode(Model))); 
     viewModel.getData=function() { return ko.mapping.toJSON(this ); }; 
     viewModel.setData=function(data){ 
     $('#tbl'+this.meta.modelname()).flexigrid(data.Grid); 
     ko.mapping.updateFromJS(this,data); 
     }; 
     $('#@Model.meta.modelname').koform({viewmodel: viewModel , validate : {errorElement:'p' } }); 
     $('#@Model.meta.modelname').koform('applyBindings'); 
     $('#load-partial').click(function() { 
      $('#partial').load('@Url.Action("CreateNote", "Entity", new {itemId = @Model.meta.id, modelEntity = "Phrase"})'); 
     }); 
     })(); 
</script> 


<div id="partial"></div> 
<button type="button" id="load-partial">Create Note</button> 

'

public ActionResult CreateNote(
     [ModelBinder(typeof(Models.JsonModelBinder))] 
     NoteModel Model, string cmd, long? itemId, string modelEntity) 
    {   
     if (cmd == "Save") 
     { 
      Model.meta.message = "Note saved"; 
      test.Database.User User = UserRepository.GetUser(1); 
      Entity entity = NotesRepository.GetEntity("Phrase"); 
      NotesRepository.StoreNote(Model.subject, Model.text, User, entity, itemId); 
      return RedirectToAction("TabNotes", new { modelEntity = "Phrase", id = itemId}); 
     } 
     Model.meta.modelname = "CreateNote"; 
     Model.meta.JsViewModelType = "EditNoteModel"; 
     Model.meta.PostAction = Url.Action("CreateNote", new { cmd = "Save", itemId = itemId}); 


     return PartialView("CreateNotePartial",Model); 

     } 

'

public ActionResult TabNotes([ModelBinder(typeof(Models.JsonModelBinder))] 
     TabNotesModel Model, string cmd, string modelEntity, long? id) 
    { 
     if (modelEntity != null) 
     { 
      Model.meta.entity = modelEntity; 
     } 
     Entity entity = NotesRepository.GetEntity(Model.meta.entity); 
     if (id.HasValue) 
     { 
      Model.meta.id = id; 
     } 

     if (Model.meta.id.HasValue) 
     { 
      Model.meta.modelname = "TN" + Model.meta.entity + Model.meta.id.Value.ToString(); 

      Dictionary<string, object> defaultValues = new Dictionary<string, object>(); 
      defaultValues.Add("Entity", entity.EntityId); 
      defaultValues.Add("ItemId", Model.meta.id.Value); 
      Entity noteEntity = NotesRepository.GetEntity("Note"); 
      var grid = UI.GetEntityFlexiGrid(noteEntity, true, true, true, true, defaultValues); 
      grid.buttons.Clear(); 
      //grid.buttons.Add(new Button { onpress = "CreateNote", action = Url.Action("CreateNote"), name = "CreateNote", postdata = new { meta = Model.meta }}); 
      grid.title = ""; 
      Model.Grid = grid; 

      Model.Grid.url = Url.Action("TabNoteData", new { id = Model.meta.entity, itemId = Model.meta.id.Value}); 
     } 


     return View("TabNotes", Model); 
    } 
:Firebugのは、次のエラーを示してい

「エラーのみ発生する可能性が

public GridResult TabNoteData(string id, long itemId, FlexigridRequest request, string cmd) 
    { 

     GridResult returnValue = null; 


     var entity = NotesRepository.GetEntity(id); 
     Entity noteEntity = NotesRepository.GetEntity("Note"); 
     //var Acess = UIRepository.GetEntityAccess(id); 

     FlexigridConfiguration grid; 
     Dictionary<string, object> defaultValues = new Dictionary<string, object>(); 
     defaultValues.Add("Entity", entity.EntityId); 
     defaultValues.Add("ItemId",itemId); 
     grid = UI.GetEntityFlexiGrid(noteEntity, true, true, true, true, defaultValues); 

     IQueryable q = NotesRepository.GetNotes(entity.EntityId, itemId); 
     var sortField = entity.EntityFields.SingleOrDefault(c => c.Name == request.sortname); 
     if (sortField == null) 
     { 
      request.sortname = grid.sortname; 
     } 
     IQueryable qdata = null; 
     if (!string.IsNullOrEmpty(request.sortname) && request.sortname != "undefined") 
     { 
      switch (request.sortorder) 
      { 
       case enumFlexigridRequestSortOrder.asc: 
        qdata = q.OrderBy(request.sortname + " ascending"); 
        break; 
       case enumFlexigridRequestSortOrder.desc: 
        qdata = q.OrderBy(request.sortname + " descending"); 
        break; 
      } 
     } 
     if (!string.IsNullOrEmpty(request.query) && !string.IsNullOrEmpty(request.qtype)) 
     { 
      qdata = qdata.Where(request.qtype.SanitizeFieldExpression() + ".Contains(@0)", request.query); 
     } 
     if (request.q != null && request.q.Length > 0) 
     { 
      for (int i = 0; i < request.q.Length; i++) 
      { 
       var type = UIRepository.GetType(id); 
       var property = type.GetProperty(request.q[i]); 

       System.ComponentModel.TypeConverter tc = System.ComponentModel.TypeDescriptor.GetConverter(property.PropertyType); 
       string sv = request.v[i]; 
       if (sv == null || sv == "null") 
       { 
        qdata = qdata.Where(request.q[i].SanitizeFieldExpression() + "[email protected]", (object)null); 
       } 
       else 
       { 
        object v = tc.ConvertFromString(sv); 
        qdata = qdata.Where(request.q[i].SanitizeFieldExpression() + "[email protected]", v); 
       } 
      } 
     } 


     string settingName = "Grid." + id + ".Rp"; 
     var setting = UIRepository.GetQuery<test.Database.UserSetting>().SingleOrDefault(uc => uc.CreatedById == CurrentUser.UserId && uc.Name == settingName); 
     if (setting == null) 
     { 
      setting = UIRepository.Create<test.Database.UserSetting>(); 
      setting.Name = settingName; 
      setting.Value = request.rp.ToString(); 
      UIRepository.Add(setting); 
     } 
     else 
     { 
      if (request.rp.ToString() != setting.Value) 
      { 
       setting.Value = request.rp.ToString(); 
       UIRepository.Update(setting); 
      } 
     } 

     int rowId = 0; 
     var datarows = new List<object>(); 
     foreach (var record in qdata.Skip((request.page - 1) * request.rp).Take(request.rp).GetData()) 
     { 
      var cellValues = new List<object>(); 
      foreach (var gc in grid.colModel.OrderBy(c => c.di)) 
      { 
       cellValues.Add(gc.ToString(UI, record)); 
      } 
      var row = new { id = rowId, cell = cellValues.ToArray() }; 
      datarows.Add(row); 
      rowId++; 
     } 
     returnValue = Grid(request.page, qdata.Count(), datarows.ToList()); 

     return returnValue; 
    } 
+0

私はこれが愚かである知っています。しかし、jQueryのlibが参照されていることを確認しましたか? – user1231231412

+0

knockoutJSスクリプトファイルのようなサウンドは読み込まれません。あなたの

関連する問題