Отображение данных идентификатора и удаление в DataTable Id с использованием ASP. NET MVC C# Visual Studio 2017 - PullRequest
0 голосов
/ 25 марта 2020

Я новичок, поэтому у меня возникли некоторые проблемы.

Я хочу отобразить данные для выбранного идентификатора при нажатии кнопки «Удалить» в моей таблице данных.

В представлении, которое я создал для Удалите Id, данные не отображаются, я пытаюсь сделать переменную в моем HttpPost, но я не могу сделать это правильно.

Любая помощь будет очень хорошей! Спасибо!

Вот мой код:

Это мой вид:

<head>
</head>
<body>
    <h3>Delete</h3>
    <hr />
    <dl class="dl-horizontal">

        <dt>
            @Html.DisplayNameFor(model => model.EmailId)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.EmailId)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.userName)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.userName)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Email)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Email)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Title)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Title)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.description)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.description)
        </dd>
        <dt>
    </dl>
    <div>
        <br /> <br />
        @using (Html.BeginForm())
        {
            @Html.AntiForgeryToken()

            <div class="form-actions no-color">

                <input onclick="DeleteConfirmation(event)" type="submit" value="Delete" name="delete" class="btn btn-default" />

                <script language="JavaScript">

                    function DeleteConfirmation(DeleteEmailId) {
                        if (!confirm('Are you sure that you want to delete this?')) {
                            DeleteEmailId.preventDefault();
                        }
                    }
                </script>

                <br /><br />
                @Html.ActionLink("Back to Email Data", "EmailData", "EmailTemplate")
            </div>

        }
    </div>
</body>

А это мой контроллер:

public ActionResult Delete (int EmailId)
{
    return View();
}

[HttpPost]
public ActionResult Delete(int EmailId, string userName, string title, string Email, string description)
{
        Deletevalue(EmailId);
        UpdateDataBase(EmailId, userName, title, Email, description);

        if (ModelState.IsValid)
        {
            return RedirectToAction("EmailData");
        };

        return View();
}

1 Ответ

1 голос
/ 26 марта 2020

1 / Вы должны объявить класс объекта, который вы хотите передать в ваше представление.

public class MyModel{
   public int EmailId{get;set;}
   public string userName{get;set;}
   public string title{get;set;}
   public string Email{get;set;}
   public string description{get;set;}
}

2 / Необходимо вызвать этот класс в Start Controller

public ActionResult Delete (int EmailId)
{
    MyModel thisModelPassToView = new MyModel {EmailId = 9999, userName = "jb", title = "Doctor", Email = "abc@gmail.com", description = "My Description"};

    return View(thisModelPassToView);
}

3 / Ваш вид будет выглядеть следующим образом

@model MyModel <!-- You missing it, may be you need to include your namespace -->
<head>
</head>
<body>
    <h3>Delete</h3>
    <hr />

    <div>
        <br /> <br />
        @using (Html.BeginForm())
        {
            @Html.AntiForgeryToken()
<dl class="dl-horizontal">

        <dt>
            @Html.DisplayNameFor(model => model.EmailId)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.EmailId)
            @Html.HiddenFor(model => model.EmailId)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.userName)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.userName)
            @Html.HiddenFor(model => model.userName)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Email)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Email)
            @Html.HiddenFor(model => model.Email)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.Title)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.Title)
            @Html.HiddenFor(model => model.title)
        </dd>
        <dt>
            @Html.DisplayNameFor(model => model.description)
        </dt>
        <dd>
            @Html.DisplayFor(model => model.description)
            @Html.HiddenFor(model => model.description)
        </dd>
        <dt>
    </dl>
            <div class="form-actions no-color">

                <input onclick="DeleteConfirmation(event)" type="submit" value="Delete" name="delete" class="btn btn-default" />

                <script language="JavaScript">

                    function DeleteConfirmation(DeleteEmailId) {
                        if (!confirm('Are you sure that you want to delete this?')) {
                            DeleteEmailId.preventDefault();
                        }
                    }
                </script>

                <br /><br />
                @Html.ActionLink("Back to Email Data", "EmailData", "EmailTemplate")
            </div>

        }
    </div>
</body>

4 / В вашем методе публикации вы должны заявить следующее.

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Delete(MyModel modelPass)
{
        Deletevalue(modelPass.EmailId);
        UpdateDataBase(modelPass.EmailId, modelPass.userName, modelPass.title, modelPass.Email, modelPass.description);

        if (ModelState.IsValid)
        {
            return RedirectToAction("EmailData");
        };

        return View();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...