MVC:在网格列中获取上传的文件名后面(MVC: get uploaded filename bac

2019-10-20 06:47发布

我有一个剑道网格的MVC剃刀形式。 网格有一个非同步图片上传。

@(Html.Kendo().Grid<CraftStore.Models.Catalog>()
.Name("CatalogGrid")
.Columns(columns =>
{
    columns.Bound(p => p.CatalogName).Filterable(true).Width(240);
    columns.Bound(p => p.CatalogDescription).Filterable(true).Width(340);
    columns.Bound(p => p.ModelNumber).Filterable(true).Width(110);
    columns.Bound(p => p.SerialNumber).Filterable(true).Width(110);
    columns.Bound(p => p.InventoryCount).Filterable(true).Width(110);
    columns.Bound(p => p.WebPrice).Title("Price").Format("{0:C}").EditorTemplateName("Currency").Width(110);
    columns.Bound(p => p.ImagePath).ClientTemplate("<img height='80' src='" + Url.Content("~/Content/Images/catalog/Products/") + "#=data.ImagePath#' title='#=data.ImagePath#' alt='#=data.CatalogName#' />").EditorTemplateName("Image").Title("Picture").Width(300);
    columns.Command(command => command.Destroy()).Width(110);
})
.ToolBar(toolbar =>
{
    toolbar.Create();
    toolbar.Save();
})
.Editable(editable => editable.Mode(GridEditMode.InCell))
.Filterable(filterable => filterable
    .Extra(false)
    .Operators(operators => operators
        .ForString(str => str.Clear()
            .Contains("Contains")
            .StartsWith("Starts with")
            .IsEqualTo("Is equal to")
            .IsNotEqualTo("Is not equal to"))
        .ForNumber(num => num.Clear()
            .IsEqualTo("Is equal to")
            .IsNotEqualTo("Is not equal to")
            .IsGreaterThan("Greater than")
            .IsLessThan("Greater than"))
    ))
.Navigatable()
.Selectable(selectable => selectable.Type(GridSelectionType.Row))
.Scrollable(scrollable => 
{
        scrollable.Virtual(true);
        scrollable.Height(400);
})
.Events(events =>
{
    events.Change("change");
})
.DataSource(dataSource => dataSource
    .Ajax()
    .Batch(true)
    .PageSize(20)
    .Model(model =>
        {
            model.Id(p => p.Id);

        }
        )
    .Events(events =>
    {
        events.Error("error_handler");
    })
    .Create("CatalogEditing_Create", "WebCatalog")
    .Read("CatalogEditing_Read", "WebCatalog")
    .Update("CatalogEditing_Update", "WebCatalog")
    .Destroy("CatalogEditing_Destroy", "WebCatalog")
)
)

所有工作得很好! - 图像有文件名的提示...上传和删除工作有很大...

我有图像编辑模板(在查看/共享/ EditorTemplates image.cshtml)

模板是:

@model string 

<div style="width:100%">
    <div class="section">
        @Html.TextBoxFor(model => model, new {@class="k-textbox result-box" })
         @(Html.Kendo().Upload()
          .Name("files")
          .Events(events=>events.Success("OnUploadSuccess"))
          .Multiple(false)
          .Async(a => a
             .Save("Save", "Upload")
             .Remove("Remove", "Upload")
             .AutoUpload(true)
          )
      )
    </div>
</div>

所述OnUploadSuccess js函数(其在剃刀视图中定义)具有成功函数

<script type="text/javascript">
    //file upload scripts
    function getFileInfo(e) {
        return $.map(e.files, function (file) {
            var info = file.name;

            // File size is not available in all browsers
            if (file.size > 0) {
                 info += " (" + Math.ceil(file.size / 1024) + " KB)";
            }
            return info;
         }).join(", ");
     }

     function OnUploadSuccess(e) {
            $(".result-box").value = getFileInfo(e);
            Model = getFileInfo(e);
     }

一切工作正常 - 变量“模式”确实得到了正确的文件名。

现在...

我如何成为网格列的当前值由getFileInfo(E)返回的文件名值???

我想“模式”的工作,但事实并非如此。

Model = getFileInfo(e); 
//since this is in a template, I thought it would bind 'Model' to the column 

然后,你可以在上面看到,在OnUploadSuccess,我还以为这可以通过使用jQuery来完成:

$(".result-box").value = getFileInfo(e);

jQuery的不查找和设置的值,但命名的ImagePath行的成员从来没有得到结果值。

无论是工作,我不知道如何去得到返回的文件名是列值。

任何帮助表示赞赏。

更新:

好吧,我已经更新了OnUpdateSuccess js函数:

var fn = getFileName(e);
$("#ImagePath").val(fn)

而这个现在更新场 - 但这不是保存在您选项卡出了场或立即点击保存。 在任何护理,旧值将被恢复。

我如何得到它留下来吗? 我想这是那里的MVVM结合将帮助?

Answer 1:

从Telerik的惊人支持工作后,我是正确的 - 这是有约束力的问题,因为MVVM不知道我的变化。 为了得到它知道我的变化,我需要上面的脚本改变后添加一行:

       $("#ImagePath").trigger("change");

现在,它完美的作品!



文章来源: MVC: get uploaded filename back in grid column