jQueryテンプレートで興味深い問題が発生しています。私はJSON(私が働いている)を介して動的なテンプレートを取得したいし、私の問題がある場所であるJSON経由でそのテンプレートに一致するデータを取得したいと考えています。ここでjqueryテンプレートとデータのJSON呼び出しテンプレート
は、私は、テンプレートのもののために持っているものです。
$.getJSON('@Url.Action("GenerateAdminTemplate", "Home", new { area = "" })', function (data) {
if (data.Success) {
adminListTemplate = data.Result;
$("#adminListHeader").html(data.Header);
$.getJSON('@Url.Action("GenerateAdminSheet", "Home", new {area = ""})', function (dataz) {
if (dataz.Success) {
$("#templateListing").text(data.Result);
$("#markupBeforeTemplateListing").text(dataz.Result);
var myTemplate = $.template(null, data.Result);
//var arr = [
// { Name: "User1", Administrator: "yes", Supervisor: "no", User: "yes" },
// { Name: "User2", Administrator: "yes", Supervisor: "no", User: "no" }
//];
var arr = dataz.Result;
$.tmpl(myTemplate, arr).appendTo("#adminListBody");
} else {
}
});
} else {
}
});
テンプレート自体は戻って来て、成功しています。ハードコーディングされた配列(arr)のコメントを外し、返された値の代わりに使用すると、期待どおりにテーブルが正確に表示されます。私はJSONしかし、データを返さ使用する場合、私はこのようになります何かを得る(私は左側の空白があるユーザ名を、削除):
JSONリクエストから戻ってきたデータ"ハードコーディングされた"配列(arr)と100%同一です。私は結果と比較してBeyond Compareを使用しました。彼らは100%同一です。徹底のために
は:.ToString()のちょうどオーバーライド
public JsonResult GenerateAdminSheet()
{
bool success = false;
String errorMessage = String.Empty;
StringBuilder result = new StringBuilder();
try
{
List<String> listOfUsersAndRoles = new List<String>();
using (DataUtilityEntities data = new DataUtilityEntities(ConfigurationManager.ConnectionStrings["DataUtilityConnection"].ConnectionString))
{
List<User> users = data.Users.ToList();
foreach (User u in users)
{
List<Role> rolesUserBelongsTo = data.UserInRoles.Where(o => o.UserId == u.UserId).Select(p => p.Role).ToList();
CustomDictionary allRoles = new CustomDictionary();
//add the username as the first entry in the dictionary
allRoles.Add("Name", u.Username);
List<Role> allRolesList = data.Roles.ToList();
foreach (Role r in allRolesList)
{
allRoles.Add(String.Format("{0}", r.Name), rolesUserBelongsTo.Exists(p => p.Name == r.Name) ? "yes" : "no");
}
listOfUsersAndRoles.Add(allRoles.ToString());
}
}
//We have the list of the objects to pass back, now we just need to format them so they will work properly
result.Append("[");
foreach (String item in listOfUsersAndRoles)
{
result.Append(item);
if (listOfUsersAndRoles.Last() != item)
result.Append(", ");
}
result.Append("]");
success = true;
}
catch (Exception e)
{
success = false;
errorMessage = String.Format("@There was an error: {0}{1}", e.Message, e.InnerException == null ? String.Empty : String.Format("@({0})", e.InnerException.Message));
}
return Json(new { Success = success, ErrorMessage = errorMessage, Result = result.ToString() }, JsonRequestBehavior.AllowGet);
CustomDictionaryされています:何かが欠落しているイム
public override string ToString()
{
StringBuilder result = new StringBuilder();
result.Append("{ ");
foreach (var pair in this)
{
result.Append(String.Format("{0}: \"{1}\"{2}", pair.Key, pair.Value, this.Last().Key == pair.Key ? String.Empty : ", "));
}
result.Append(" }");
return result.ToString();
}
ありここでJSONデータを返すコードです結果はJSonリクエストから戻ってきますか?