2011-12-30 87 views
0

我得到了一個ActionResult TabNotes,它返回一個顯示網格中數據庫註釋的選項卡的View。在標籤是ActionResult的CreateNote,它返回一個PartialView和保存筆記後,我重定向回的ActionResult TabNotes與

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

但是一個按鈕,當它使用轉到作用的結果TabNotes這種重定向它不顯示網格。 javascript給出以下錯誤

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

第一次進入ActionResult時不會發生這種情況。使用斷點的ActionResult TabNotes的以下部分:

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

    return View("TabNotes", Model); 
} 

給出模型相同的輸入值,第一次和第二次。這個錯誤從哪裏來?

編輯:螢火蟲顯示以下錯誤:

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); 
    } 

'

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 2011-12-30 15:28:12

+0

沒有加載類似knockoutJS腳本文件的聲音。你能告訴你在哪裏申報

相關問題