Как динамически добавлять данные, добавленные пользователем, в диалоговом окне модели asp.net mvc 4

0

Я должен реализовать функцию Create/Edit, используя диалог модели в ASP.NET MVC 4 с первым подходом базы данных Entity Framework, как показано ниже:

Изображение 174551

Я просмотрел следующую статью в сети при поиске решения для этого.

ЩЕЛКНИТЕ ЗДЕСЬ ДЛЯ ПРОСМОТРА

Это очень похоже на то, что я хочу, но единственное отличие заключается в том, что в моем случае имя Emp и код Emp являются статическими, но пользователь может динамически добавлять строки на стороне клиента в поле 1, поле 2 и раздел комментариев, поэтому в этом случае, как сохранить (создавать/редактировать) данные (динамически добавленные пользователем) в базу данных.

tblEmployee → эта таблица содержит имена EmpID, Emp и столбца Emp

tblTable1 → эта таблица имеет идентификатор (первичный ключ), EmpID (внешний ключ), Detail1

tblTable2 → эта таблица имеет идентификатор (первичный ключ), EmpID (внешний ключ), Detail2

Должен ли я использовать подход json/ajax или что-то еще, что вы предлагаете.

благодаря

Теги:
entity-framework
asp.net-mvc-4

2 ответа

0

Если пользователь может добавить Detail1, Detail2 и Comment динамически, определите их как модель, а затем добавьте в действие, как Detail2 ниже:

public class Detail1 {
   public string Content {get; set;}
}

public class Detail2 {
   public string Content {get; set;}
}

public class Comment {
   public string Content {get; set;}
}

[HttpPost]
public ActionResult Create(string EmpName, string EmpCode, List<Detail1> detail1s, List<Detail2> detail2s, List<Comment> comments)
{
    //save operations...
}

И просмотр:

@using (Html.BeginForm())
{
// other static fields..

<input type="button" value="Add Detail1" onclick="AddDetail1();" />
<input type="button" value="Add Detail2" onclick="AddDetail2();" />
<input type="button" value="Add Comment" onclick="AddComment();" />

<table id="LeftDetails1">
        <tr>
            <td>
                Detail 1
            </td>
        </tr>
</table>

<table id="RightDetails2">
        <tr>
            <td>
               Detail 2
            </td>
        </tr>
</table>

<table id="BottomComments">
        <tr>
            <td>
               Comments
            </td>
        </tr>
</table>
}

<script type="text/javascript">
    function AddDetail1() {
        var rowDetail1 = $('#LeftDetails1 tr').length;
        var index = rowDetail1 + 1;
        $('#LeftDetails1').append("<tr><td><input type='hidden' name='detail1s.Index' value='" + index + "' /><input type='text' name='detail1s[" + index + "].Content' /></td></tr>");
    }

    function AddDetail2() {
        var rowDetail2 = $('#RightDetails2 tr').length;
        var index = rowDetail2 + 1;
        $('#RightDetails2').append("<tr><td><input type='hidden' name='detail2s.Index' value='" + index + "' /><input type='text' name='detail2s[" + index + "].Content' /></td></tr>");
    }

    function AddComment() {
        var rowComment = $('#BottomComments tr').length;
        var index = rowComment + 1;
        $('#BottomComments').append("<tr><td><input type='hidden' name='comments.Index' value='" + index + "' /><input type='text' name='comments[" + index + "].Content' /></td></tr>");
    }
</script>

И вы можете дать значение EmpId до 3 моделей после сохранения сотрудника. Во-первых, сохраните сотрудника, затем вы получите его Id, затем укажите значение Detail1 для Detail1, Detail2 и Comment и сохраните снова.

Надеюсь, это сработает.

0

В параметрах контроллера параметры динамических свойств задаются как массивы.

Когда вы добавляете новую строку на стороне клиента, назовите свой элемент управления так же, как и имя параметра. то есть:

<input type="text" name="Detail1[0]" />
<input type="text" name="Detail1[1]" />
<input type="text" name="Detail1[2]" />

Когда вы отправляете сообщение на этот контроллер, вы должны увидеть, что все динамические данные заполнили ваши массивы. Вы можете обращаться с ключами, когда он туда доберется.

  • 0
    Можем ли мы сделать это, используя подход пост-данных JSON?
  • 0
    Я могу отправить список значений, добавленных динамически, но как сопоставить эти значения с их идентификатором в таблице базы данных, потому что я отправляю только значения, а не идентификатор каждого значения. т.е. как я могу быть уверен, что я собираюсь обновить правильную строку в таблице базы данных?
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню