شير الحدث البند تحديث - إلغاء يعود الحدث إلى صفحة editform؟

StackOverflow https://stackoverflow.com/questions/2050466

  •  20-09-2019
  •  | 
  •  

سؤال

ولدي جهاز استقبال الحدث لنوع المحتوى للتحقق من صحة بعض البيانات في حالة ItemUpdating. إذا قمت بإلغاء الحدث (بعض البيانات غير صالح على سبيل المثال)، وتعيين خصائص إلغاء إلى true:

properties.Cancel = true;
properties.ErrorMessage = "...";

وشير يلغي طيب الحدث التحديث، ولكن يظهر صفحة الخطأ شير القياسية (مع الرسالة المحددة). إلا هو، لقد حصلت مشكلة الشكوى أن هذه ليست في الواقع مفيدة جدا - علينا أن العودة إلى صفحة EditForm بحيث يمكن تحديث التفاصيل

ولقد فعلت كل هذا، هناك طريقة سهلة؟ الاقتراح الوحيد لقد كان هو أنني يمكن تنفيذ صفحتي الخطأ الخاصة، ولكن هذا السبر جدا حل ثقيلة إلى (نظريا) عملية بسيطة.

هل كانت مفيدة؟

المحلول

هل يمكن أن تحاول كود HTML الناتج (والذي يتضمن جافا سكريبت كذلك) في ERRORMESSAGE. ولكن حتى لو كنت تفعل، والمشكلة هي أن لديك في طريق العودة لم آمنة للبيانات دخل المستخدم. إما إجراء HTTP / 301 إعادة توجيه ثم إنها تحميل صفحة جديدة، أو إجراء history.back() الذهاب العميل مع جافا سكريبت وثم المتصفح قد إعادة تحميل الصفحة.

والطريقة الرسمية للقيام بذلك هو أن تقوم بإنشاء تعريف قائمة وتخصيص القالب القائمة. ثم قمت بتحرير القالب تحرير الشكل وتشتمل على عدد كبير من عناصر ASP.Net مدقق حسب الحاجة. ثم، تنفيذ المنطق جانب الملقم ما تحتاج إليه. يشرح هذا المقال التقنية: http://msdn.microsoft.com/en- لنا / مكتبة / aa543922.aspx

وتحرير: لإرفاق تحكم مخصص للتحرير من contenttype محددة، يمكنك إضافة قسم XmlDocuments إلى تعريف ContentType الخاص بك. على سبيل المثال، مثل هذا

<ContentType
    ..........

    <XmlDocuments>
      <XmlDocument NamespaceURI="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
        <FormTemplates xmlns="http://schemas.microsoft.com/sharepoint/v3/contenttype/forms">
          <Display>ContentTypeName_DispForm</Display>
          <Edit>ContentTypeName_EditForm</Edit>
          <New>ContentTypeName_NewForm</New>
        </FormTemplates>
      </XmlDocument>
    </XmlDocuments>
  .......

وبعد ذلك قمت بإنشاء الملف yoursolution_controltemplates.ascx الخاصة، والذي يحتوي على هذا النحو أيضا كتل: "

<SharePoint:RenderingTemplate ID="ContentTypeName_DispForm" runat="server"> 
<Template>
      <!-- put whatever controls you need here, we typically create a 
           separate custom control which implements everything-->
</Template>
</SharePoint:RenderingTemplate>

نصائح أخرى

ويمكنك محاولة إعادة توجيه باستخدام CopyUtil: <لأ href = "http://weblogs.asp.net/jan/archive/2008/02/26/copyutil-aspx-a-little-sharepoint-gem.aspx" يختلط = "noreferrer نوفولو"> http://weblogs.asp.net/jan/archive/2008/02/26/copyutil-aspx-a-little-sharepoint-gem.aspx

وصلة = " HTTP: // yoursite / ؟ _layouts / CopyUtil.aspx استخدام = معرف والعمل = dispform وItemId = X & ListId = X & WebId = X & SiteId = X

وPage.Response.Redirect (وصلة)

وربما هذا العمل

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top