【问题标题】:HTML5 for .NET developers using Kendo UI ASP .NET MVC使用 Kendo UI ASP .NET MVC 的 .NET 开发人员的 HTML5
【发布时间】:2013-01-04 09:12:40
【问题描述】:

我使用剑道网格来显示从控制器收集的电子邮件列表,然后当用户单击网格行时,电子邮件正文会显示在剑道编辑器中,我想在编辑器上编辑电子邮件并将电子邮件正文保存回来使用 Web 服务到数据库。但是要在服务器端与 c# 代码进行交互并不是那么简单。我们不想有太多的 Javascript 代码。目前的代码是这样的

_____ index.aspx

<%: Html.Kendo().Grid(Model.mailList)
        .Name("Grid")
                    .HtmlAttributes(new { style = "height:auto;font-size: medium;" })
        .Columns(columns =>
        {
            columns.Bound(p => p.MailId).Width(200);
            columns.Bound(p => p.From.Value).Width(200).Title("Sender");
            columns.Bound(p => p.Subject).Width(200);
            //columns.command(commands =>
            //{
            //    commands.destroy();
            //});

        }) 
        .Pageable()
        .Sortable()
        .Scrollable()
        .Filterable()

        .Events(events => events.Change("onChange")) 

        .DataSource(dataSource => dataSource
            .Ajax()
            .ServerOperation(false)
            //.Destroy(destroy => destroy.Action("Index","Home"))
            .Model(model =>
            {
                //The unique identifier (primary key) of the model is the ProductID property
                model.Id(p => p.MailId);

                // Declare a model field and optionally specify its default value (used when a new model instance is created)
                model.Field(p => p.Subject).DefaultValue("N/A");

                // Declare a model field and make it readonly
                model.Field(p => p.Sender).Editable(false);
            })                              

            .PageSize(5)          
            )
            .Selectable()

%>

function sendMailToController() {
       $.ajax({
            url: "/Home/SendMail/",
            data: {
                emailID: mailID,
                emailBody: mailBody

            },
            cache: false,
            type: "GET",
            timeout: 10000,
            dataType: "json",
            success: function (result) {
                if (result.Success) { 
                   alert("Operation Completed");
                } else {
                    alert("Operation Failed");
                }
            }
        });
    }

______控制器代码

public ActionResult Index()
        {

            MailModel mailModelobj = new MailModel();
            mailModelobj.GetMailList();
            return View(mailModelobj);


        }

public JsonResult SendMail(Guid emailID, string emailBody)
        {
            MailModel mailModelObj = new MailModel();
            mailModelObj.body = emailBody;
            mailModelObj.mailID = emailID;
            var Result = mailModelObj.SendMail(mailModelObj);

            return Json(new { Success = true, Result }, JsonRequestBehavior.AllowGet);
        }

问题是,它不适用于来自编辑器的长电子邮件正文。我们不喜欢上面的交流方式。

我们希望在 C# 领域中不要过多地使用 Javascript。

我的问题是:

  1. 从 kendo ui 控件与服务器端交互的最佳做法是什么(从控制器获取值并通过控制器设置值?

  2. 能否请您用一些小例子来解释一下,例如提交按钮以将电子邮件正文提交回服务器。

  3. 是否可以使用 kendo UI 进行测试驱动开发?如何或示例将非常有帮助。

提前谢谢..

【问题讨论】:

    标签: c# asp.net-mvc-3 html kendo-ui


    【解决方案1】:

    问题是,它不适用于来自编辑器的长电子邮件正文。 我们不喜欢上面的交流方式。

    使用 POST 代替 GET:

    [HttPost]
    public JsonResult SendMail(Guid emailID, string emailBody)
    {
        ...
    }
    
    
    $.ajax({
            url: "/Home/SendMail/",  (you should use Url.Action here)
            type: "POST",
            data: {
                emailID: mailID,
                emailBody: mailBody
    
            },
            cache: false,
            timeout: 10000,
            dataType: "json",
            success: function (result) {
                if (result.Success) { 
                   alert("Operation Completed");
                } else {
                    alert("Operation Failed");
                }
            }
        });
    

    从 kendo ui 与服务器端交互的最佳实践是什么 控制(从控制器获取值并通过 控制器?

    根据我的经验,这是一种很好的方法(使用 AJAX 请求)。

    【讨论】:

    • 嗨,感谢您的快速回复..更改为 POST 它可以工作:) 使用 ajax 方法,有没有办法发送一个完整的对象(具有多个属性的邮件对象)而不是 emailID、emailBody?
    • @JohnSohn 是的,绝对可以发送一个完整的对象。例如,请参阅haacked.com/archive/2010/04/15/…
    • 嗨,我刚刚看到了,现在它可以发送带有简单字符串的长邮件正文..但是 HTML 格式的邮件正文不起作用。没有 AJAX 调用正在触发..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-02
    • 1970-01-01
    • 1970-01-01
    • 2010-11-29
    • 2010-10-05
    • 2010-10-07
    相关资源
    最近更新 更多