2017-10-07 438 views
0

下载最新(3.0)样板为零。加载资源失败:服务器响应状态为500(内部服务器错误)动态api

跟进,而不是任务codeproject.com

我加入了简单的实体(客户端)的任务创建者的应用程序执行。

任务的显示工作正常。然而,当我尝试添加一个新的客户端似乎动态API是不可用,我收到以下错误:

image ClientsController:

`[AbpMvcAuthorize] 公共类ClientsController:MyAppControllerBase 私有只读IClientAppService _clientService;

public ClientsController(IClientAppService clientService) 
    { 
     _clientService = clientService; 
    } 

    public async Task<ViewResult> Index(GetAllClientsInput input) 
    { 
     var output = await _clientService.GetAll(input); 
     var model = new Web.Models.Clients.IndexViewModel(output.Items); 
     return View("Index", model); 

    } 

    public async Task Create(CreateClientInput input) 
    { 
     await _clientService.Create(input); 
    } 

    public async Task Delete(CreateClientInput input) 
    { 
     await _clientService.Create(input); 
    } 
}` 

Index.js:

(function() { 
    $(function() { 

     var _clientService = abp.services.app.client; 
     var _$modal = $('#ClientCreateModal'); 
     var _$form = _$modal.find('form'); 

     _$form.validate(); 

     _$form.find('button[type="submit"]').click(function (e) { 
      e.preventDefault(); 

      if (!_$form.valid()) { 
       return; 
      } 

      var client = _$form.serializeFormToObject(); //serializeFormToObject is defined in main.js 

      abp.ui.setBusy(_$modal); 
      _clientService.create(client).done(function() { 
       _$modal.modal('hide'); 
       location.reload(true); //reload page to see new user! 
      }).always(function() { 
       abp.ui.clearBusy(_$modal); 
      }); 
     }); 

     _$modal.on('shown.bs.modal', function() { 
      _$modal.find('input:not([type=hidden]):first').focus(); 
     }); 
    }); 
})(); 

Index.cshtml

@section scripts 
{ 
    <environment names="Development"> 
     <script src="~/js/views/clients/Index.js" asp-append-version="true"></script> 
    </environment> 

    <environment names="Staging,Production"> 
     <script src="~/js/views/clients/Index.min.js" asp-append-version="true"></script> 
    </environment> 
} 
<div class="row clearfix"> 
    <div class="col-lg-12 col-md-12 col-sm-12 col-xs-12"> 
     <div class="card"> 
      <div class="header"> 
       <h2> 
        @L("Clients") 
       </h2> 
       <ul class="header-dropdown m-r--5"> 
        <li class="dropdown"> 
         <a href="javascript:void(0);" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> 
          <i class="material-icons">more_vert</i> 
         </a> 
         <ul class="dropdown-menu pull-right"> 
          <li><a href="javascript:void(0);" class=" waves-effect waves-block">Action</a></li> 
          <li><a href="javascript:void(0);" class=" waves-effect waves-block">Another action</a></li> 
          <li><a href="javascript:void(0);" class=" waves-effect waves-block">Something else here</a></li> 
         </ul> 
        </li> 
       </ul> 
      </div> 
      <div class="body table-responsive"> 
       <table class="table"> 
        <thead> 
        <tr> 
         <th>@L("UserName")</th> 
         <th>@L("FullName")</th> 
         <th>@L("EmailAddress")</th> 
         <th>@L("IsActive")</th> 
        </tr> 
        </thead> 
        <tbody> 
        @foreach (var user in Model.Clients) 
        { 
         <tr> 
          <td>@user.FirstName</td> 
          <td>@user.LastName</td> 
          <td>@user.Email</td> 
          <td>@user.Mobile</td> 
         </tr> 
        } 
        </tbody> 
       </table> 
       <button type="button" class="btn btn-primary btn-circle waves-effect waves-circle waves-float pull-right" data-toggle="modal" data-target="#ClientCreateModal"> 
        <i class="material-icons">add</i> 
       </button> 
      </div> 
     </div> 
    </div> 
</div> 
<div class="modal fade" id="ClientCreateModal" tabindex="-1" role="dialog" aria-labelledby="ClientCreateModalLabel" data-backdrop="static"> 
    <div class="modal-dialog" role="document"> 
     <div class="modal-content"> 
      <form name="userCreateForm" role="form" novalidate class="form-validation"> 
       <div class="modal-header"> 
        <h4 class="modal-title"> 
         <span>@L("CreateNewClient")</span> 
        </h4> 
       </div> 
       <div class="modal-body"> 
        <div class="form-group form-float"> 
         <div class="form-line"> 
          <input class="form-control" type="text" name="FirstName" required maxlength="@AbpUserBase.MaxUserNameLength" minlength="2"> 
          <label class="form-label">@L("FirstName")</label> 
         </div> 
        </div> 
        <div class="form-group form-float"> 
         <div class="form-line"> 
          <input type="text" name="LastName" class="form-control" required maxlength="@AbpUserBase.MaxNameLength"> 
          <label class="form-label">@L("LastName")</label> 
         </div> 
        </div> 
        <div class="form-group form-float"> 
         <div class="form-line"> 
          <input type="text" name="Mobile" class="form-control" required maxlength="@AbpUserBase.MaxSurnameLength"> 
          <label class="form-label">@L("Mobile")</label> 
         </div> 
        </div> 
        <div class="form-group form-float"> 
         <div class="form-line"> 
          <input type="email" name="Email" class="form-control" required maxlength="@AbpUserBase.MaxEmailAddressLength"> 
          <label class="form-label">@L("Email")</label> 
         </div> 
        </div> 
       </div> 
       <div class="modal-footer"> 
        <button type="button" class="btn btn-default waves-effect" data-dismiss="modal">@L("Cancel")</button> 
        <button type="submit" class="btn btn-primary waves-effect">@L("Save")</button> 
       </div> 
      </form> 
     </div> 
    </div> 
</div> 

客户服务:

[AbpAuthorize(PermissionNames.Pages_Tenants)] 
public class ClientAppService : ApplicationService, IClientAppService 
{ 
    private readonly IRepository<Client> _clientRepository; 

    public ClientAppService(IRepository<Client> clientRepository) 
    { 
     _clientRepository = clientRepository; 
    } 

    public async Task<ListResultDto<ClientListDto>> GetAll(GetAllClientsInput input) 
    { 
     var clients = await _clientRepository 
      .GetAll().ToListAsync<Client>(); 

     return new ListResultDto<ClientListDto>(
      ObjectMapper.Map<List<ClientListDto>>(clients)); 
    } 

    public async Task Create(CreateClientInput input) 
    { 
     var task = ObjectMapper.Map<Client>(input); 
     await _clientRepository.InsertAsync(task); 
    } 
} 

服务器不被打到在所有的创建行动。

任何想法我失踪?

+0

您可以检查错误日志中'* .Web.Mvc \ App_Data文件\ Logs'? – aaron

+0

非常感谢。日志文件告诉了很多。客户端实现IMustHaveTenant。并且当我以主机用户的身份登录时,错误显示“无法为IMustHaveTenant实体将TenantId设置为0!”我希望我能看到该警告,而不是发生内部服务器错误! – akd

+0

那么,这是一个编程错误,客户端不应该可见。 – aaron

回答

1

我认为IMustHaveTenant界面存在误解。当您从IMustHaveTenant派生实体时,您不能在主机环境中使用该实体。主机没有租户ID。据我了解,客户属于租户。所以你必须做的是,从主机菜单中删除客户端页面。每当你想看到租户的客户,只需使用模拟。

要显示/隐藏特定菜单项,您可以使用requiredPermissionName。权限可以配置为仅用于租户/主机/两者。因此,创建一个配置为用于租户的新权限。在为客户端页面创建新的MenuItemDefinition时设置该权限。而已!

读=>https://aspnetboilerplate.com/Pages/Documents/Navigation?searchKey=navigation#registering-navigation-provider

+0

不确定是否有简单的方法从主机菜单中删除菜单。我认为菜单是在主机和租户之间共享的。然而,保持菜单但删除禁用添加新客户端是有意义的。因为主机应该能够访问并查看所有客户端列表。 – akd

+0

我使用requiredPermissionName属性更新了我的asnwer。这是你的情况的重要一点。 –

相关问题