2015-01-19 2 views
2

У меня есть кендо сетки с Ajax связыванияПолучить стоимость недвижимости в шаблоне редактора кендо сетки

@(Html.Kendo().Grid<LightViewModelExtended>() 
    .Name("LightsGrid") 
    .Columns(col => 
    { 
     col.Bound(x => x.LightID) 
.ClientTemplate(Html.ActionLink("#: LightID #", "Edit", new { id = "#: LightID #" }).ToHtmlString()); 
     col.Bound(x => x.Name); 
     col.Command(command => command.Edit()); 
     col.Command(command => command.Destroy()); 
    }) 
    .ToolBar(toolbar => toolbar.Create()) 
    .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("LightExtended")) 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .Model(model => model.Id(x => x.LightID)) 
     .Read(read => read.Action("GetLights", "Lights")) 
     .Create(create => create.Action("CreateLight", "Lights")) 
     .Update(update => update.Action("UpdateLight", "Lights")) 
     .Destroy(destroy => destroy.Action("DeleteLight", "Lights")) 
)) 

У меня также есть шаблон редактора

<table> 
<tr> 
    <td> 
     @Html.LabelFor(model => model.Name) 
    </td> 
    <td> 
     @Html.KendoTextBoxFor(model => model.Name) 
    </td> 
    <td> 
     @Html.ValidationMessageFor(model => model.Name) 
    </td> 
</tr> 
</table> 

Я хочу, чтобы показать ссылку действий в шаблоне редактора

@Html.ActionLink(Model.LightID + ".ies", "Download", "Lights", new { id = Model.LightID }, null) 

так он будет выглядеть

<table> 
<tr> 
    <td> 
     @Html.LabelFor(model => model.Name) 
    </td> 
    <td> 
     @Html.KendoTextBoxFor(model => model.Name) 
    </td> 
    <td> 
     @Html.ValidationMessageFor(model => model.Name) 
    </td> 
    <td> 
     @Html.ActionLink(Model.LightID + ".ies", "Download", "Lights", new { id = Model.LightID }, null) 
    </td> 
</tr> 
</table> 

И дайте мне ссылки, как «1.ies», «2.ies» и так далее, что приводит меня к http://mysite/Lights/1 где 1 является ID, но это выглядит как «0.ies»

я знаю, что Модель свойство не заполняется данными при использовании привязки Ajax, но я не могу найти правильный путь для достижения этой

Я уже пытался @Html.ValueFor и #: LightID #, но это не сработало

ответ

1

@Html.ValueFor был зафиксирован в кэндо 2014.3.1411

+0

Не могли бы вы уточнить, что именно исправлено? Это '#: LightID #' или '@ Html.ValueFor'? – mrmashal

+0

Я обновил свой ответ – Saito

1

Пожалуйста, попробуйте ниже фрагмент кода. Дайте мне знать, если я не понимаю ваши требования.

VIEW

@(Html.Kendo().Grid<MvcApplication1.Models.TestModel>() 
    .Name("LightsGrid") 
    .Columns(col => 
    { 
     col.Bound(x => x.ID) 
.ClientTemplate(Html.ActionLink("#: ID #", "Edit", new { id = "#: ID #" }).ToHtmlString()); 
     col.Bound(x => x.Name); 
     col.Command(command => command.Edit()); 
     col.Command(command => command.Destroy()); 
    }) 
    .ToolBar(toolbar => toolbar.Create()) 
    .Editable(editable => editable.Mode(GridEditMode.PopUp).TemplateName("Partial1")) 
    .DataSource(dataSource => dataSource 
     .Ajax() 
     .Model(model => model.Id(x => x.ID)) 
     .Read(read => read.Action("GetData", "Home")) 
     .Create(create => create.Action("CreateData", "Home")) 
     .Update(update => update.Action("UpdateData", "Home")) 
     .Destroy(destroy => destroy.Action("DestroyData", "Home")) 
) 
) 

ЧАСТИЧНЫЙ VIEW ("Views \ Shared \ EditorTemplates \ Partial1.cshtml")

@model MvcApplication1.Models.TestModel 

<table> 
    <tr> 
     <td> 
      @Html.LabelFor(model => model.Name) 
     </td> 
     <td> 
      @Html.Kendo().TextBoxFor(model => model.Name) 
     </td> 
     <td> 
      @Html.ValidationMessageFor(model => model.Name) 
     </td> 
     <td> 
      @Html.HiddenFor(model => model.ID) 
      @Html.ActionLink(Model.ID + ".iso", "Download", "Lights", null, new { id = "Download" }) 
     </td> 
    </tr> 
</table> 
<script> 
    var myVar = setInterval(function() { myTimer() }, 300); 
    $(document).ready(function() { 

    }); 
    function myTimer() { 
     if ($("#ID") != undefined && $("#ID") != null) { 
      if ($("#ID").val() == "0") { 
      } 
      else { 
       $("#Download").html($("#ID").val() + ".iso"); 
       $("#Download").prop("href", $("#Download").prop("href") + "/" + $("#ID").val()); 
       clearInterval(myVar); 
      } 
     } 
    } 
</script> 

CONTROLLER

namespace MvcApplication1.Controllers 
{ 
    public class HomeController : Controller 
    { 
     // 
     // GET: /Home/ 

     public ActionResult Index() 
     { 
      return View(); 
     } 

     public ActionResult GetData([DataSourceRequest] DataSourceRequest request) 
     { 
      List<TestModel> lst = new List<TestModel>(); 
      lst.Add(new TestModel() { ID = 1, Name = "Name1" }); 
      lst.Add(new TestModel() { ID = 2, Name = "Name2" }); 
      lst.Add(new TestModel() { ID = 3, Name = "Name3" }); 

      return Json(lst.ToDataSourceResult(request)); 
     } 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult CreateData([DataSourceRequest] DataSourceRequest request, TestModel model) 
     { 
      if (model != null && ModelState.IsValid) 
      { 
       //productService.Create(product); 
      } 

      return Json(new[] { model }.ToDataSourceResult(request, ModelState)); 
     } 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult UpdateData([DataSourceRequest] DataSourceRequest request, TestModel model) 
     { 
      if (model != null && ModelState.IsValid) 
      { 
       //productService.Update(product); 
      } 

      return Json(new[] { model }.ToDataSourceResult(request, ModelState)); 
     } 

     [AcceptVerbs(HttpVerbs.Post)] 
     public ActionResult DestroyData([DataSourceRequest] DataSourceRequest request, TestModel model) 
     { 
      if (model != null) 
      { 
       //productService.Destroy(product); 
      } 

      return Json(new[] { model }.ToDataSourceResult(request, ModelState)); 
     } 
    } 
} 

МОДЕЛЬ

namespace MvcApplication1.Models 
{ 
    public class TestModel 
    { 
     public int ID { get; set; } 

     public string Name { get; set; } 
    } 
} 
+0

Я пытаюсь с этим фрагментом и он такой же, как у меня, она показывает «0.ies», потому что Model.ID не заполняется с правильным ID при использовании привязки ajax И я хочу показать «1.ies», «2.ies» и т. д. в шаблоне редактора Я добавил эту информацию в свой вопрос – Saito

+0

Я обновил свой код частичного просмотра. вы столкнулись с этой проблемой, поскольку поле ID является первичным ключом для сетки кендо. –

+0

да, это работает Я разместил предложение с ValueFor on kendo uservoice – Saito

Смежные вопросы