Создание страницы для каждого продукта с его идентификатором

Я нашел в модульном тестовом файле ( DATAMONGO-1457 ) способ использования среза. Что-то вроде этого.

newAggregation(
    UserWithLikes.class, 
    match(new Criteria()),
    project().and("likes").slice(2)
);

0
задан 28 March 2019 в 03:51
поделиться

1 ответ

Итак, чтобы сделать ссылку для операции CRUD на основе параметра, вы можете использовать AJAX для POST-данных с параметром или использовать Html.ActionLink, который не POST, а создает тег привязки .

1) Использование ActionLink с параметром:

@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 для POST вашего контроллера. Вы можете сделать что-то вроде этого:

@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);
    }
}
0
ответ дан Rahul Sharma 28 March 2019 в 03:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: