【发布时间】:2014-05-23 13:31:16
【问题描述】:
我正在用 ASP.NET MVC 和 API 开发一个页面,使用 Knockout,Typescript,代码如下:JSFiddler
服务器代码:
// POST: api/Empresas
[ResponseType(typeof(Business))]
public async Task<IHttpActionResult> PostBusiness(Business business)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.Businesses.Add(business);
await db.SaveChangesAsync();
return CreatedAtRoute("DefaultApi", new { id = business.Id }, business);
}
业务对象:
public class Business
{
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[ScaffoldColumn(false)]
public Guid Id { get; set; }
[Display(Name = "CNPJ", Description = "Cadastro Nacional de Pessoa Juridica")]
public string CNPJ { get; set; }
[Display(Name = "Nome", Description = "Razão Social")]
public string Name { get; set; }
[Display(Name = "Limite Mensal", Description = "Limite mensal de uso")]
public int MonthlyLimit { get; set; }
[Display(Name = "Mensal Atual", Description = "Uso Mensal Atual")]
public int MonthlyCurrent { get; set; }
[Display(Name = "Inicio Assinatura", Description = "Data inicial da assinatura")]
public DateTime SubscriptionStart { get; set; }
[Display(Name = "Meses Contratados", Description = "Numero de meses contratados")]
public int MonthContractCount { get; set; }
}
该示例无法运行,因为没有要测试的端点。 我的第一个问题是为什么数据绑定不能为此工作? 其次也是最重要的,我不断收到以下错误消息:
来自网页的消息
[对象对象] 解析器错误
SyntaxError: Invalid character - 未能创建业务
好的
我不知道为什么会这样,我已经成功地对代码进行了多次更改。有什么想法吗?
我使用的值: CNPJ = 123.321.321-25 名称 = 测试业务 每月限额 = 20000 订阅开始 = 01/01/2014 monthContractCount = 24
提前致谢
编辑:
createBusiness = (formElement) => {}
我将方法上的签名更改为如上所示,试图用“this”关键字解决范围问题。不过还是不行。
新编辑:
createBusiness = (formElement) => {
$(formElement).validate();
if ($(formElement).valid()) {
var formserialized = $(formElement).serialize();
$.post('/Api/Empresas/', formserialized, null, "json")
.done((result) => {
this.Business.Id = result.Id;
this.Business.Name(result.Name);
this.Business.CNPJ(result.CNPJ);
this.Business.MonthlyLimit(result.MonthlyLimit);
this.Business.SubscriptionStart(result.SubscriptionStart);
this.Business.MonthContractCount(result.MonthContractCount);
this.Business.MonthlyCurrent(result.MonthlyCurrent);
})
.fail((x, y, z) => {
alert(x + '\n' + y + '\n' + z + ' - failed to create business');
});
};
}
这是最后一次更改,现在可以使用,但正如您所见,我必须将 this.BaseUri 更改为 '/Api/Empresas/' 由于“this”的范围,此更改是必要的,所以这是一个修复,但不是真的。有什么想法吗?
【问题讨论】:
标签: javascript asp.net knockout.js typescript