这是我通过反思所做的事情:
看法:
$(".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”是我从http://aspalliance.com/author.aspx?uId=1026获得的 Convert.ChangeType 的更强大版本(因此它可以处理可空值) 。