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 ...

  1. 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?
  2. 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?

Foi útil?

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"
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top