我正在使用Razor MVC .NET進行開發。我在我的數據是回來了很好的,即一個實體框架,我有這樣的設置,例如:在href中添加一個鏈接到Kendo UI gridview中每個項目ID的項目
型號:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace MyProject.Web.Models
{
public class Training
{
public int Id {get; set;}
public string Name {get; set;}
public string editLink {get; set;}
}
}
控制器:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Data.Entity;
using MyProject.Entities;
using MyProject.Data;
using Kendo.Mvc.UI;
using Kendo.Mvc.Extensions;
using MyProject.Web.Models;
namespace MyProject.Web.Controllers
{
public class TrainingController : Controller
{
[HttpGet]
public ActionResult Index()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Read([DataSourceRequest] DataSourceRequest request)
{
using (var db = new MyDb(false))
{
var data = db.Training.Select(d => new TrainingModel
{
Id = d.Id,
Name = d.Name
// I want to do this, here:
// editLink = "<a href=Training.cshtml?mode=edit&Id=" + d.Id + " target=_blank>Edit Training</a>";
}).ToDataSourceResult(request);
return Json(data, JsonRequestBehavior.AllowGet);
}
}
}
}
視圖ISN」重要的 - 一個標準的基於Kendo UI的gridview,它調用上面的「Read」例程。我也修改了一些代碼,只是爲了給我一個基本的想法。
我想要做的是將超鏈接與每個ID連接起來,並顯示在每個項目的gridview列中,這樣用戶可以點擊該鏈接,然後轉到另一個頁面,在那裏他們可以編輯它們項目。我不能這樣做,因爲「Id」是數據庫中的一個int,我需要在一個字符串或一個對象中使用HTML嗎?無論哪種方式,它們不會混合使用它們現在使用的格式,而LINQ似乎也不會讓您即時改變它。
- 我試過
SqlFunctions.ConvertString
,它甚至不認爲SqlFunctions
作爲一種類型。 - 我會使用內置的編輯功能,但是其他數據庫表中的數據需要在ID的其他頁面上顯示,而Kendo控件只允許您一次關注一張表。
所以,簡而言之,如何使用此Select語句將鏈接插入到gridview列中,或者我可以嗎?還是有另一種方式來編輯Json數據之前,它返回?或者人們完全以其他方式完成它?
謝謝,但'd.Id.ToString()'不工作。 「LINQ to Entities不識別方法'System.String ToString()'的方法,並且這個方法不能被轉換成存儲表達式」是錯誤。 Linq不允許.ToString()。 – vapcguy
你的第二部分,網格配置雖然工作!你是對的,我可以在第二列中使用id .Bound語句。我剛剛添加了'columns.Bound(p => p.Id).Title(「Action」)。ClientTemplate(「Edit Training」);'它工作完美!謝謝! – vapcguy