Asp.Net MVC Master Detail изглед с помощта на кендо мрежа

Искам да създам изглед на контакти. Моят модел е:

public class Contact
{
    public Contact()
    {
        Documents = new HashSet<Document>();
    }

    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string ContactNo { get; set; }
    public string EmailId { get; set; }
    public string Address { get; set; }
    public string Notes { get; set; }
    public ICollection<Document> Documents { get; set; }
}

public class Document
{
    public Document() { }

    public int Id { get; set; }
    public int ContactId { get; set; }
    public string DocumentNo { get; set; }
    public string DocumentType { get; set; }
    public byte[] FileContent { get; set; }
    public string FileName { get; set; }
    public int ContentLength { get; set; }
}

Създадох изглед с данни за контакт и мрежа за документи. Всъщност аз съм нов в MVC, така че съм търсен в интернет как да постигна това. Но все още не мога да намеря никакво работещо решение. Не знам как да добавя един или повече документи и да запазя подробностите за документа в мрежата. Това, което се опитвам да постигна, е да запазя информация за контакт с качени документи (един или повече), докато изпращам формуляра.


person Arun    schedule 07.07.2014    source източник


Отговори (1)


Можете да използвате кода по-долу, за да постигнете това, което желаете, като използвате комбинация родител-дете. Кодът по-долу е само примерен, предоставящ опция само за изглед към подробен изглед.

@model Models.Contact

<div id="ModelView">
          <div >@Html.Label("Name")</div>
          <div >
            @Html.TextBoxFor(model => model.FirstName)
            @Html.TextBoxFor(model => model.LastName)
          </div>
          ...
          ...

  <div id="grid"></div>
</div>

<script>
            $(document).ready(function() {
                $("#grid").kendoGrid({
                    dataSource: {
                        data: model.Documents,
                        schema: {
                            model: {
                                fields: {
                                    //append fiels as per your document model
                                    FileName: { type: "string" },
                                    DocumentType: { type: "number" }
                                }
                            }
                        },
                        pageSize: 20
                    },
                    dataBound: OnDataBound
                    height: 550,
                    scrollable: true,
                    sortable: true,
                    columns: [
                        "FileName",
                        { field: "FileName", title: "File Name", width: "130px", clientTemplate: "<input type='file' name='docs'/>" },
                        { field: "DocumentType", title: "Document Type", width: "130px" }
                    ]
                });
            });

 function OnDataBound(e){
   $('[name=docs]').kendoUpload(
 {
     async: 
         {
            saveUrl: ......
            removeUrl: ........
            autoUpload: true
        },
        upload: onUpload, //Your custom function for uploader
        success: onSuccess //Write the below function to display approprate message
 }); 
 }
 </script>

Забележка: Горният код ще качва документи един по един, а не всички документи наведнъж, само за балансиране на натоварването.

person D_Learning    schedule 07.07.2014
comment
Всъщност имам изглед с модел с единичен контакт и решетка за документи. Въпросът ми е как да използвам контрола за качване в мрежата и да го публикувам със събитие за изпращане. Искам да кача повече от един файл. - person Arun; 08.07.2014
comment
Да, можете да постигнете същото от по-горе, единствената разлика ще бъде, че ще трябва да посочите отделен контролер за създаване/актуализиране/четене за модел на документ за по-добър контрол върху вмъкването и актуализирането. - person D_Learning; 08.07.2014
comment
@Arun Предполагам, че не разглеждате модела на контактите в мрежата, както показах, вярно ли е? - person D_Learning; 08.07.2014
comment
Да, не използвам решетка за модел на контакти. Да предположим, че ако използвам отделен контролер за модел на документ, как ще се свърже с ContactId (чужд ключ)? Тъй като идентификаторът на контакт се създава след вмъкване в базата данни. - person Arun; 09.07.2014
comment
Има много начини да постигнете по-горе, като използвате различни контролери, но ако искате да използвате текущата си структура, тогава и горният код ще работи. Единствената js функция, която трябва да добавите, ще бъде onSuccess, в която ще трябва да добавите информацията за документа от файла за качване в мрежата, така че информацията да бъде уловена от главния модел (модел за контакт) - person D_Learning; 09.07.2014