Использование jEditable с ASP.NET MVC (POSTing) - PullRequest
3 голосов
/ 09 августа 2009

Я понимаю, что с помощью jEditable (http://www.appelsiini.net/projects/jeditable)) вы можете выполнять редактирование на месте и отправлять измененную информацию в URL.

В моем представлении ASP.NET MVC отображается информация о модели, которую я хотел бы сделать редактируемой на месте. В настоящее время у меня есть два представления - одно текстовое представление и одно представление редактирования, в котором форма полностью помещена в POST, а затем мое действие контроллера принимает весь объект (собранный из имен элементов формы) в качестве параметра, обновляя объект и возвращаясь к тексту. только просмотр.

Однако, когда я переключаюсь на jEditable, я использую только текстовое представление и POST по одному элементу за раз, а не весь объект. Как я могу создать одно действие контроллера, которое может принять то, что jEditable представляет собой POST, и затем поместить его в соответствующее свойство моего объекта?

Ответы [ 2 ]

7 голосов
/ 09 августа 2009

Здесь есть довольно хороший пример кода :

$("#myTextBox").editable('<%=Url.Action("UpdateSettings","Admin") %>', {   
           submit: 'ok',   
           cancel: 'cancel',   
           cssclass: 'editable',   
           width: '99%',   
           placeholder: 'emtpy',   
           indicator: "<img src='../../Content/img/indicator.gif'/>"  
       });  


[AcceptVerbs("POST")]   
public ActionResult UpdateSettings(string id, string value)   
{   
    // This highly-specific example is from the original coder's blog system,
    // but you can substitute your own code here.  I assume you can pick out
    // which text field it is from the id.
    foreach (var item in this.GetType().GetProperties())   
    {   

        if (item.Name.ToLower().Equals(id, StringComparison.InvariantCultureIgnoreCase))   
            item.SetValue(Config.Instance, value, null);   
    }   
    return Content(value);   
} 

Вам также может понадобиться это:
http://noahblu.wordpress.com/2009/06/17/jeditable-note-dont-return-json-and-how-to-return-strings-from-asp-net-mvc-actions/

1 голос
/ 09 марта 2010

Вот что я делаю с помощью размышлений:

Вид:

$(".edit").editable('<%=Url.Action("UpdateEventData","Event") %>', {
                submitdata: {eventid: <%=Model.EventId %>},
                tooltip: "Click to edit....",
                indicator: "Saving...",
                submit : "Save",
                cancel : "Cancel"
            });

Контроллер:

public string UpdateEventData(int eventid, string id, string value)
    {
        //load the event
        var evt = Repository.GetEvent(eventid);

        //UpdateModel;
        System.Reflection.PropertyInfo pi = evt.GetType().GetProperty(id);
        if (pi==null)
            return "";
        try
        {

            object newvalue = Concrete.HelperMethods.ChangeType(value, pi.PropertyType);

            pi.SetValue(evt, newvalue, null);
            Repository.Save();

        }
        catch (Exception ex)
        {
            //handle errors here
        }

        return pi.GetValue(evt, null).ToString();

    }

Метод "HelperMethods.ChangeType" является более надежной версией Convert.ChangeType (так что он может обрабатывать обнуляемые значения), которую я получил из http://aspalliance.com/author.aspx?uId=1026.

...