Я не уверен, как разместить этот вопрос, не включая половину кода моих сайтов, но здесь идет.
У меня есть сайт с формой субподряда, формой компании и контактной формой. Из формы субподряда вы можете создать новую компанию и / или новый контакт с помощью кнопок, которые открывают диалоги 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
{
Из формы субконтракта вызывается та же самая процедура пост-контакта, что и из формы компании. Но один работает, а другой нет. В контроллере контактов:
[AcceptVerbs(HttpVerbs.Post), MarlowAuthorize(Roles = "Subcontract_Modify, Admin", ViewName = "AuthorizationError")]
public JsonResult Post(contact contact)
{
if (ModelState.IsValid)
{
try
{
Я попытался добавить атрибуты авторизации к местам в контроллере и попытался удалить их. Какую бы комбинацию я ни попробовал, я получаю одинаковый результат. Вы можете добавить контакт из субконтракта, но не компании. И вы не можете добавить контакт из компании. Я продолжаю думать, что знание этого приведет меня к тому, чтобы увидеть, в чем разница, но я не могу ее найти.
EDIT
Просто вошел в Firefox, чтобы использовать Firebug, и похоже, что он работает в Firefox. Но не работает в IE7 или IE8.