我不确定如何在不包含我的一半网站代码的情况下发布此问题,但现在就去了。
我有一个包含转包表格,公司表格和联系表格的网站。在转包表单中,您可以通过按钮创建新公司和/或新联系人,这些按钮可打开jQuery对话框并发布公司或联系信息。从公司表单中,有一个用于创建新联系人的按钮。
从转包表格:
$('#popupCreateCompany').dialog(
{
autoOpen: false,
modal: true,
width: 600,
open: function(event, ui) {
if ($('#primary_company').val().length > 0) {
$('#secondary').attr('checked', 'true');
}
else {
$('#primary').attr('checked', 'true');
$('#sec').hide();
}
},
buttons:
{
'Add': function() {
var dialog = $(this);
var form = dialog.find('input:text, select');
$.post('<%= ResolveUrl("~/company/post") %>', $(form).serialize(), function(data) {
if (data.Result == "success") { ...
$('#popupCreateContact').dialog(
{
autoOpen: false,
modal: true,
width: 600,
buttons:
{
'Add': function() {
var dialog = $(this);
var form = dialog.find('input:text, select');
$.post('<%= ResolveUrl("~/contact/post") %>', $(form).serialize(), function(data) { ...
从公司表格:
$('#popupCreateContact').dialog(
{
autoOpen: false,
modal: true,
buttons:
{
'Add': function() {
var dialog = $(this);
var form = dialog.find('input:text, select');
$.post('<%= ResolveUrl("~/contact/post") %>', $(form).serialize(), function(data) {
if (data.Result == "success") { ...
此功能一直有效,直到我们对网站实施了一些自定义授权。现在,您可以从转包表单添加联系人,但不能从转包合同中添加公司。您无法从公司表单添加联系人。当您单击“添加”时,没有任何反应。我在$.post
行之前和之后添加了一个提醒,它之前点击了警报,但之后没有提醒。在联系人/职位上设一个断点,它永远不会到达那里。相同的授权组有权添加分包合同,公司和联系人。
在公司控制人员中:
[AcceptVerbs(HttpVerbs.Post), MarlowAuthorize(Roles = "Subcontract_Modify, Admin", ViewName = "AuthorizationError")]
public JsonResult Post(company company)
{
if (ModelState.IsValid)
{
try
{
从公司表格中的转包表格中调用相同的联系后例程。但是一个有效,另一个没有。在Contact Controller中:
[AcceptVerbs(HttpVerbs.Post), MarlowAuthorize(Roles = "Subcontract_Modify, Admin", ViewName = "AuthorizationError")]
public JsonResult Post(contact contact)
{
if (ModelState.IsValid)
{
try
{
我尝试将授权属性添加到控制器中的位置,我尝试删除它们。无论我尝试什么组合,我得到相同的结果。您可以从转包中添加联系人,但不能添加公司。而且,您无法添加公司的联系人。我一直在想,知道这将导致我看到某处有什么不同,但我似乎无法找到它。
修改 刚进入Firefox使用Firebug,它似乎在Firefox中运行。但是在IE7或IE8中不起作用。
答案 0 :(得分:3)
使用Fiddler并比较Firefox和IE发送的数据的差异。
答案 1 :(得分:0)
有了工作,但我有兴趣知道是否有人可以解释“为什么”。
更改了此
var dialog = $(this);
var form = dialog.find('input:text, select');
$.post('<%= ResolveUrl("~/company/post") %>', $(form).serialize(), function(data) { ...
到
var dialog = $(this);
var form = $('#popupCreateCompany').find('input:text, select');
$.post('<%= ResolveUrl("~/company/post") %>', $(form).serialize(), function(data) { ...
现在可以在IE中使用。
我不明白为什么它在上周才起作用,为什么它仍然适用于分包合同的联系,而不是来自分包合同的公司或公司的联系。