我的问题是,我想要最简单的方法为每个产品制作一个页面,其中包含他在数据库中存储的ID的
页面例:
首页/产品/"数据库中的产品ID">
并且此链接必须显示产品的"详细信息"^
目的是当我添加新产品时,使用产品ID自动创建一个新页面。
控制器中的操作代码:
[HttpPost]
public ActionResult AddArticle(NewsData art)
{
var ArticleID = art.ArticleID;
using (MatrodyEntities db = new MatrodyEntities())
{
db.NewsData.Add(art);
db.SaveChanges();
}
return View(art);
}
路由配置:
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
,所以为了基于参数为CRUD操作建立链接,您可以使用AJAX使用参数发布数据,也可以使用不POST而是创建锚标记Html.ActionLink
。
1( 将动作链接与参数一起使用:
@foreach (var item in Model)
{
<tr>
//Additional data
<td>
@Html.ActionLink("Delete", "Home", new { id = item.id})
</td>
</tr>
}
在Home
控制器中:
public ActionResult Delete(int id) {//Your logic}
请注意,如果您使用的是默认RouteConfig
请确保将id
作为参数发送,或者您可以根据需要创建自己的路由。
2( 您也可以使用 AJAX 开机自检到控制器。你可以做这样的事情:
@foreach (var item in Model)
{
<tr>
//Additional data
<td>
<a href="#" data-id="@item.id" onclick="confirmDelete(this)"></a>
</td>
</tr>
}
在您的 AJAX 中:
function confirmDelete(event) {
var recordToDelete = $(event).attr("data-id"); //Get our current file id here
if (confirm("Are you sure you want to delete this record") == true) {
//Prepare our data
var json = {
id: recordToDelete
};
$.ajax({
url: '@Url.Action("DeleteFile", "Home")',
type: "POST",
dataType: "json",
data: { "json": JSON.stringify(json) },
success: function (data) {
if(data == "success") {
alert("Successfully deleted selected file");
location.reload();
}
},
error: function (data) {
alert("Could not delete selected file. Please try again!");
},
});
}
};
最后在您的控制器中:
//Delete a file based on the ID that you get from your View
[HttpPost]
public JsonResult DeleteFile(string json)
{
var serializer = new JavaScriptSerializer();
try
{
dynamic jsondata = serializer.Deserialize(json, typeof(object));
string id = jsondata["id"];
if(id != "")
{
int getid = Convert.ToInt32(id);
//Call your db or your logic to delete the file
DatabaseAccess data = new DatabaseAccess();
string result = data.DeleteFile(getid);
if(result.Equals("Success"))
{
return Json("success", JsonRequestBehavior.AllowGet);
}
else
{
return Json("fail", JsonRequestBehavior.AllowGet);
}
}
else
{
return Json("notfound", JsonRequestBehavior.AllowGet);
}
}
catch
{
return Json("dberror", JsonRequestBehavior.AllowGet);
}
}