SharePoint - Como posso personalizar NewForm.aspx no recurso personalizado?
-
11-09-2019 - |
Pergunta
Eu criei uma lista personalizada em um site SharePoint e gerou um projeto Visual Studio 2008 usando SharePoint Solution Generator. I pode empacotar isso como um recurso e instalá-lo. Ele funciona muito bem no meu servidor.
Depois de testar isso, eu tenho sido capaz de adicionar uma masterpage personalizado para o recurso que é implantado para a pasta _catalogs / masterpage. Aqui está:
<Elements Id="2196306F-3F37-40b5-99CF-42E89B93888A" xmlns="http://schemas.microsoft.com/sharepoint/">
<Module Name="DefaultMasterPage" Url="_catalogs/masterpage" RootWebOnly="FALSE">
<File Url="gcbranding.master" Type="GhostableInLibrary" IgnoreIfAlreadyExists="TRUE" />
</Module>
</Elements>
Agora que tenho uma masterpage personalizado em meu site, eu gostaria de ter este utilizado para a criação de novos itens. Mas eu não quero ter que definir o mestre de SharePoint Designer.
Voltando para a solução gerada, tem NewForm.aspx etc. com o esquema de lista. Como posso ...
- Personalizar o formulário que é exibido para novos itens, e tê-lo redirecionar para uma página thankyou.aspx em vez de mostrar todos os itens da lista?
- Defina o URL para a página principal corretamente?
Eu estou perdido no ponto número 1. Eu necessidade de criar uma Web Part personalizada e incorporar isso em NewForm.aspx?
No ponto 2 Fiz alguns progressos, mas ter executado em um problema. Se eu definir o mestre como este em minha NewForm.aspx ...
MasterPageFile="~/masterurl/gcmaster.master"
Ele irá instalar OK, mas quando eu bati o site eu recebo um erro, porque ~ não é permitido na URL. Se eu usar _catalogs / masterpage na directiva, não vai encontrar o mestre porque o URL é relativo. Só este código parece funcionar:
MasterPageFile="../../_catalogs/masterpage/gcmaster.master"
O que é a melhor maneira prática de definir o arquivo de página mestra no SharePoint, ao implantar uma característica custom / solução?
Solução
Re Masterpage: Eu acho que você quer '~masterurl/gcmaster.master
'. no "/" entre o "~" e "mestre".
Re NewForm: Você pode criar sua própria página code-behind para NewForm.aspx, altere o atributo Inherits
a sua própria classe. Eu acho que vou começar por ter o meu código personalizado trás herdar de SharePoint.SharePoint.WebPartPages.WebPartPage , e de lá ir.
Outras dicas
Personalizar o formulário que é exibido para novos itens, e tê-lo redirecionar para uma página thankyou.aspx em vez de mostrar todos os itens da lista?
A resposta mais simples, é, mudar o link "Adicionar novo item" para adicionar um URL de origem para sua página de agradecimento. Por exemplo, em vez de (eu tive que deixar de fora o http):
www.yoursite.com/Lists/Links/NewForm.aspx
você alterá-lo para:
www.yoursite.com/Lists/Links/NewForm.aspx?Source=www.yoursite.com/ThankYou.aspx
Quando o usuário clique em Enviar na página NewForm, eles serão redirecionados para thankyou.aspx.
Você provavelmente terá que usar o SharePoint Designer para mudar o link, no entanto.
A melhor maneira de fazer isso é abrir-se NewForm.aspx no SharePoint Designer, alteração:
MasterPageFile = "~ masterurl / default.master"
para
MasterPageFile = "~ masterurl / custom.master"
Isto, obviamente, editar a instância atual, mas se você deseja implantar isso com um site def ou recurso, então você precisa criar e NewForm.aspx página dentro da mesma pasta que schema.xml na sua pasta lista de instâncias.
Espero que ajude.
Substituir o evento OnPreInit na página da Web, e lá colocar esta linha em:
this.MasterPageFile = SPContext.Current.Web.CustomMasterUrl;
(se você estiver usando a página mestra personalizada)
Se você estiver usando a página mestra padrão, use a seguinte linha:
this.MasterPageFile = SPContext.Current.Web.MasterUrl;
HTH,
James
Se você quiser reutilizar uma página mestre através de uma variedade de páginas .aspx, então é melhor defini-lo como o Master Page personalizada. Não há nenhuma página no WSS que permite fazer isso facilmente, então você é melhor fora de qualquer direito do Clicando seu / masterpage arquivo _catalogs / gcmaster.master no SharePoint Designer e escolhendo Definir como página personalizada Mestre, ou defini-lo no servidor através de PowerShell (cabeçalho roteiro SharePoint disponível aqui: http: // sharepoint .microsoft.com / blogs / Zach / Lists / Mensagens / Post.aspx? ID = 7 )
$web = Get-SPWeb("http://mysiteurl")
$web.CustomMasterUrl = "_catalogs/masterpage/gcmaster.master"
$web.Update()
Em seguida, na directiva @ page da sua página .aspx, você pode definir:
MasterPageFile="~/masterurl/custom.master"
Tenha em mente que isso faz com que todas as páginas .aspx em seu site que a referência "~ / masterurl / custom.master" usam sua página gcmaster.master.
Como alternativa, você pode ignorar tudo isso e para sua página .aspx simplesmente incluir uma directiva @Page parecida com esta:
MasterPageFile="~/site/_catalogs/masterpage/gcmaster.master"